[SOLVED] Node traversal using TreeViewer and SelectionEvent
I have 2 drop down menus that I want to auto fill(Server and Target) with information from the current node selected. Let's say I have
Code:
+Server
+Westchase
-Dev
-Stage
-Prod
+Orange
-Dev
-Stage
-Prod //I double click this node
If I double click on Prod it opens up my EditTargetView. Right now my code has you pick a server and target using drop down menus
Code:
//Server Dropdown
new Label(banner, SWT.NONE).setText("Servers:");
final Combo serverCombo = new Combo(banner, SWT.READ_ONLY);
serverCombo.setBounds(50, 50, 400, 65);
final Server[] servers = ServerGroup.getChildren();
final String[] serverNames = new String[servers.length];
for(int i = 0; i < servers.length; i++){
serverNames[i] = servers[i].getName();
}
serverCombo.setItems(serverNames);
//Target Dropdown
new Label(banner, SWT.NONE).setText("Targets:");
final Combo targetCombo = new Combo(banner, SWT.READ_ONLY);
targetCombo.setBounds(50, 120, 300, 65);
//creates the list for Target dropdown
serverCombo.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent event){
if (serverCombo.getSelectionIndex()== -1){
oldDirectory.setText("");
}
else{
String testString = serverCombo.getItem(serverCombo.getSelectionIndex());
Server[] checkServer = ServerGroup.getChildren();
for(int i = 0; i<checkServer.length; i++){
if(testString.equalsIgnoreCase(checkServer[i].getName())){
theServer = checkServer[i];
break;
}
}
final Target[] targets = theServer.getChildren();
//adds the selected servers children to the target combo
final String[] targetNames = new String[3];
for(int x = 0; x < targets.length; x++){
targetNames[x] = targets[x].getName();
}
targetCombo.setItems(targetNames);
targetCombo.addSelectionListener(new SelectionAdapter(){
public void widgetSelected(SelectionEvent event){
if(targetCombo.getSelectionIndex() == -1){
oldDirectory.setText("");
}
else{
Object firstElement = targetCombo.getItem(targetCombo.getSelectionIndex());
String testString = targetCombo.getItem(targetCombo.getSelectionIndex());
for(int x = 0; x<targetNames.length; x++){
if(testString.equalsIgnoreCase(targetNames[x])){
oldDirectory.setText(targets[x].getDirectory());
}
}
}
}
});
}
}
});
but I need it to auto-fill in the menu using the node selected and its parent(Orange). I can manage to have it set the Target using
Code:
ISelection sel = event.getSelection();
Object selObj = ((IStructuredSelection) sel).getFirstElement();
in my double click listener but I've never used a hashmap or binary tree before so I have no idea how to navigate through the TreeViewer to get the parent. Where should I start?