[jboss-cvs] jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders ...
Robert Stryker
rawblem at gmail.com
Fri Oct 13 16:20:30 EDT 2006
User: rawb
Date: 06/10/13 16:20:30
Modified: as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders
DescriptorXPathViewProvider.java
Log:
Fixed issues regarding properties view not updating or having different references to the same object. It just wasn't very clean.... or functional actually.
Revision Changes Path
1.9 +423 -419 jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders/DescriptorXPathViewProvider.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: DescriptorXPathViewProvider.java
===================================================================
RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/viewproviders/DescriptorXPathViewProvider.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- DescriptorXPathViewProvider.java 28 Sep 2006 22:18:03 -0000 1.8
+++ DescriptorXPathViewProvider.java 13 Oct 2006 20:20:30 -0000 1.9
@@ -87,7 +87,6 @@
import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper;
import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper.SimpleXPathPreferenceTreeItem;
import org.jboss.ide.eclipse.as.core.server.ServerAttributeHelper.XPathPreferenceTreeItem;
-import org.jboss.ide.eclipse.as.core.util.ASDebug;
import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin;
import org.jboss.ide.eclipse.as.ui.Messages;
import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin.ServerViewProvider;
@@ -98,18 +97,15 @@
import org.jboss.ide.eclipse.as.ui.views.JBossServerTableViewer.ContentWrapper;
public class DescriptorXPathViewProvider extends JBossServerViewExtension {
- private XPathTreeContentProvider contentProvider;
- private XPathTreeLabelProvider labelProvider;
- private DescriptorXPathPropertySheetPage propertyPage;
private static final String XPATH_PROPERTY = "_XPATH_PROPERTY_";
+ private static final String PREFERENCE_KEY = "_DESCRIPTOR_PREFERENCE_PAGE_DETAILS_SHOWN";
+ private static final boolean COMPLEX = true;
+ private static final boolean SIMPLE = false;
- private static String PREFERENCE_KEY = "_DESCRIPTOR_PREFERENCE_PAGE_DETAILS_SHOWN";
-
- private static boolean COMPLEX = true;
- private static boolean SIMPLE = false;
-
-
+ private XPathTreeContentProvider contentProvider;
+ private XPathTreeLabelProvider labelProvider;
+ private DescriptorXPathPropertySheetPage propertyPage;
private Action newXPathCategoryAction, deleteXPathCategoryAction, newXPathAction, editXPathAction, deleteXPathAction;
@@ -117,16 +113,80 @@
private JBossServer jbServer;
private SimpleXPathPreferenceTreeItem root;
+ private Object activeCategory;
+ private Object selectedPropertyObject;
public DescriptorXPathViewProvider() {
contentProvider = new XPathTreeContentProvider();
labelProvider = new XPathTreeLabelProvider();
- getPropertySheetPage(); // prime it
createActions();
addListeners();
}
+ protected void addListeners() {
+ }
+
+ protected void setActiveCategory(Object o) {
+ if( o != null && o != activeCategory) {
+ activeCategory = o;
+ }
+ }
+ protected Object getActiveCategory() {
+ return activeCategory;
+ }
+ protected void setPropertySelection(Object o) {
+ selectedPropertyObject = o;
+ }
+ protected Object getPropertySelection() {
+ return selectedPropertyObject;
+ }
+ protected class XPathTreeContentProvider implements ITreeContentProvider {
+
+ public Object[] getChildren(Object parentElement) {
+ if( parentElement instanceof ServerViewProvider )
+ return getRoot().getChildren2();
+ return new Object[0];
+ }
+ public Object getParent(Object element) {
+ return null;
+ }
+ public boolean hasChildren(Object element) {
+ return getChildren(element).length > 0 ? true : false;
+ }
+ public Object[] getElements(Object inputElement) {
+ return new Object[0];
+ }
+ public void dispose() {
+ }
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ if( oldInput != newInput ) {
+ server = (IServer)newInput;
+ jbServer = server == null ? null : JBossServerCore.getServer(server);
+ root = null;
+ }
+ }
+ }
+ protected class XPathTreeLabelProvider extends LabelProvider {
+ public Image getImage(Object element) {
+ return null;
+ }
+ public String getText(Object element) {
+ if( element instanceof SimpleXPathPreferenceTreeItem) {
+ return ((SimpleXPathPreferenceTreeItem)element).getData().toString();
+ }
+ return "";
+ }
+ }
+
+
+ public ITreeContentProvider getContentProvider() {
+ return contentProvider;
+ }
+
+ public LabelProvider getLabelProvider() {
+ return labelProvider;
+ }
public boolean showSimple() {
return JBossServerUIPlugin.getDefault().getPreferenceStore().getBoolean(PREFERENCE_KEY) == SIMPLE;
@@ -139,6 +199,10 @@
return root;
}
+ public void setRoot(SimpleXPathPreferenceTreeItem root) {
+ this.root = root;
+ }
+
public void createActions() {
@@ -161,7 +225,7 @@
deleteXPathCategoryAction= new Action() {
public void run() {
- Object selected = getServerViewSelection();
+ Object selected = getActiveCategory();
if( selected instanceof SimpleXPathPreferenceTreeItem && ((SimpleXPathPreferenceTreeItem)selected).getParent().equals(getRoot())) {
int style = SWT.APPLICATION_MODAL | SWT.YES | SWT.NO;
MessageBox messageBox = new MessageBox (Display.getCurrent().getActiveShell(), style);
@@ -172,7 +236,7 @@
ServerAttributeHelper helper = jbServer.getAttributeHelper();
helper.saveXPathPreferenceTree(getRoot());
helper.save();
-
+ setActiveCategory(null);
refreshViewer();
}
}
@@ -184,7 +248,7 @@
newXPathAction = new Action() {
public void run() {
SimpleTreeItem tree = getRoot();
- Object o = getServerViewSelection();
+ Object o = getActiveCategory();
if( o != null && o instanceof SimpleXPathPreferenceTreeItem) {
String category = (String) ((SimpleXPathPreferenceTreeItem)o).getData();
XPathDialog d = new XPathDialog(Display.getCurrent().getActiveShell(), tree, category, jbServer);
@@ -211,7 +275,7 @@
editXPathAction = new Action() {
public void run() {
SimpleTreeItem tree = getRoot();
- Object o = getXPathViewSelection();
+ Object o = getPropertySelection();
if( o != null && o instanceof XPathPreferenceTreeItem) {
XPathPreferenceTreeItem original = (XPathPreferenceTreeItem)o;
String category = (String) original.getParent().getData();
@@ -237,8 +301,7 @@
deleteXPathAction = new Action() {
public void run() {
- SimpleTreeItem tree = getRoot();
- Object o = getXPathViewSelection();
+ Object o = getPropertySelection();
if( o instanceof XPathPreferenceTreeItem ) {
((XPathPreferenceTreeItem)o).getParent().deleteChild((XPathPreferenceTreeItem)o);
ServerAttributeHelper helper = jbServer.getAttributeHelper();
@@ -251,208 +314,331 @@
deleteXPathAction.setText(Messages.DescriptorXPathDeleteXPath);
}
- public void addListeners() {
-
- }
-
public void fillContextMenu(Shell shell, IMenuManager menu, Object selection) {
- if( getServerViewSelection() instanceof ServerViewProvider ) {
+ if( selection instanceof ServerViewProvider ) {
menu.add(this.newXPathCategoryAction);
menu.add(new Separator());
return;
}
- if( getServerViewSelection() instanceof SimpleXPathPreferenceTreeItem ) {
+ if( selection instanceof SimpleXPathPreferenceTreeItem ) {
menu.add(this.newXPathAction);
menu.add(this.deleteXPathCategoryAction);
menu.add(new Separator());
}
}
- public Object getServerViewSelection() {
- return JBossServerView.getDefault().getJbViewer().getSelectedElement();
- }
- public Object getXPathViewSelection() {
- if( propertyPage != null && propertyPage.xpathTree != null ) {
- TreeItem[] items = propertyPage.xpathTree.getSelection();
- if( items.length == 1 ) {
- return items[0].getData();
- }
- }
- return null;
- }
-
- protected class XPathTreeContentProvider implements ITreeContentProvider {
-
- public Object[] getChildren(Object parentElement) {
- if( parentElement instanceof ServerViewProvider )
- return getRoot().getChildren2();
- return new Object[0];
- }
- public Object getParent(Object element) {
- return null;
- }
- public boolean hasChildren(Object element) {
- return getChildren(element).length > 0 ? true : false;
- }
- public Object[] getElements(Object inputElement) {
- return new Object[0];
- }
- public void dispose() {
- }
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- server = (IServer)newInput;
- jbServer = server == null ? null : JBossServerCore.getServer(server);
- root = null;
- }
+ public void setSimple(boolean simple) {
}
- protected class XPathTreeLabelProvider extends LabelProvider {
- public Image getImage(Object element) {
- return null;
- }
- public String getText(Object element) {
- if( element instanceof SimpleXPathPreferenceTreeItem) {
- return ((SimpleXPathPreferenceTreeItem)element).getData().toString();
- }
- return "";
- }
- }
-
- public ITreeContentProvider getContentProvider() {
- return contentProvider;
- }
+ // Preference Page
- public LabelProvider getLabelProvider() {
- return labelProvider;
+ public ViewProviderPreferenceComposite createPreferenceComposite(Composite parent) {
+ return new DescriptorPreferencePage(parent);
}
+ public class DescriptorPreferencePage extends ViewProviderPreferenceComposite {
- public IPropertySheetPage getPropertySheetPage() {
- if( propertyPage == null ) {
- propertyPage = new DescriptorXPathPropertySheetPage();
- }
- return propertyPage;
- }
-
+ private Button simple, complex;
+ private Combo portsCategoryCombo;
+ private Combo serversCombo;
+ private JBossServer[] servers;
- public class DescriptorXPathPropertySheetPage implements IPropertySheetPage {
- private Object input;
+ private HashMap serverToCategoryList;
+ private HashMap serverToDefaultPortCat;
+ private HashMap serverToAttributeHelper;
+ public DescriptorPreferencePage(Composite parent) {
+ super(parent, SWT.NONE);
+ setLayout(new FormLayout());
- private TreeViewer xpathTreeViewer;
- private TreeColumn column, column2, column3;
- private Tree xpathTree;
- private XPathPropertyLabelProvider labelProvider;
+ serverToCategoryList = new HashMap();
+ serverToDefaultPortCat = new HashMap();
+ serverToAttributeHelper = new HashMap();
- private Group xPathGroup;
- public void createControl(Composite parent) {
- createXPathGroup(parent);
- addViewerMenus();
- }
+ Composite viewDetailsComp = new Composite(this, SWT.NONE);
+ fillViewDetails(viewDetailsComp);
- public XPathPropertyLabelProvider getLabelProvider() {
- if( labelProvider == null ) {
- labelProvider = new XPathPropertyLabelProvider();
- }
- return labelProvider;
+ Composite defaultPortComp = new Composite(this, SWT.BORDER);
+ FormData portData = new FormData();
+ portData.left = new FormAttachment(0,5);
+ portData.top = new FormAttachment(viewDetailsComp,5);
+ portData.right = new FormAttachment(50,-5);
+ defaultPortComp.setLayoutData(portData);
+ fillPortPreferences(defaultPortComp);
}
- private void addViewerMenus() {
- MenuManager menuManager = new MenuManager("#PopupMenu");
- menuManager.setRemoveAllWhenShown(true);
- final Shell shell = xpathTree.getShell();
- menuManager.addMenuListener(new IMenuListener() {
- public void menuAboutToShow(IMenuManager mgr) {
- xpathTreeMenuAboutToShow(shell, mgr);
+ private ServerAttributeHelper getAttributeHelper(JBossServer server) {
+ Object helper = serverToAttributeHelper.get(server);
+ if( helper == null ) {
+ helper = server.getAttributeHelper();
+ serverToAttributeHelper.put(server, helper);
}
- });
- Menu menu = menuManager.createContextMenu(xpathTree);
- xpathTree.setMenu(menu);
+ return (ServerAttributeHelper)helper;
}
- private void xpathTreeMenuAboutToShow(Shell shell, IMenuManager menu) {
- menu.add(newXPathAction);
- if( getXPathViewSelection() != null && getXPathViewSelection() instanceof XPathPreferenceTreeItem) {
- menu.add(editXPathAction);
- menu.add(deleteXPathAction);
- }
- }
+ protected void fillPortPreferences(Composite portComp) {
+ portComp.setLayout(new RowLayout(SWT.VERTICAL));
- public void setSimple(boolean simple) {
- boolean showSimple = showSimple();
+ servers = JBossServerCore.getAllJBossServers();
+ String[] serverNames = new String[servers.length];
+ for( int i = 0; i < servers.length; i++ )
+ serverNames[i] = servers[i].getServer().getName();
- if( showSimple != simple ) {
- JBossServerUIPlugin.getDefault().getPreferenceStore().setValue(PREFERENCE_KEY, simple == SIMPLE);
- JBossServerUIPlugin.getDefault().savePluginPreferences();
+ portComp.setLayout(new RowLayout(SWT.VERTICAL));
- // if the properties page isn't opened, it'll throw nulls
- try {
- if( simple ) {
- getLabelProvider().setSimple(true);
- column3.setText("");
- column2.setText(Messages.DescriptorXPathAttributeValue);
- xpathTreeViewer.refresh();
- } else {
- getLabelProvider().setSimple(false);
- column3.setText(Messages.DescriptorXPathXPathXML);
- column2.setText(Messages.DescriptorXPathAttributeKeyValue);
- xpathTreeViewer.refresh();
- }
- } catch ( Exception e ) {
- }
- }
- }
+ Label nameLabel = new Label(portComp, SWT.NONE);
+ nameLabel.setText(Messages.DescriptorXPathServerName);
- public void dispose() {
- }
+ serversCombo = new Combo(portComp, SWT.READ_ONLY);
+ serversCombo.setItems(serverNames);
- public Control getControl() {
- return xPathGroup;
- }
+ Label categoryLabel = new Label(portComp, SWT.NONE);
+ categoryLabel.setText(Messages.DescriptorXPathPortCategory);
- public void setActionBars(IActionBars actionBars) {
- }
+ portsCategoryCombo = new Combo(portComp, SWT.READ_ONLY);
- public void setFocus() {
- }
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- //input = null;
- Object element = ((IStructuredSelection)selection).getFirstElement();
- if( element instanceof ContentWrapper ) {
+ serversCombo.addSelectionListener(new SelectionListener() {
- if( input == ((ContentWrapper)element).getElement() ) return;
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
- input = ((ContentWrapper)element).getElement();
- IRunnableWithProgress op = new IRunnableWithProgress() {
- public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
- final IProgressMonitor monitor2 = monitor;
- jbServer.getDescriptorModel().refreshDescriptors(monitor2);
- Display.getDefault().asyncExec(new Runnable() {
- public void run() {
- xpathTreeViewer.setInput(input);
- xpathTreeViewer.expandToLevel(2);
- jbServer.getAttributeHelper().setServerPorts(root);
+ public void widgetSelected(SelectionEvent e) {
+ serverComboChanged();
}
});
- }
- };
- try {
- new ProgressMonitorDialog(new Shell()).run(false, true, op);
- //JBossServerCore.getServer(contentProvider.server).getDescriptorModel().refreshDescriptors(new NullProgressMonitor());
- } catch( Exception e) {
- e.printStackTrace();
- }
- }
+ portsCategoryCombo.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ public void widgetSelected(SelectionEvent e) {
+ JBossServer server = getSelectedServer();
+ if( server != null ) {
+ int index = portsCategoryCombo.getSelectionIndex();
+ String selectedCategory = portsCategoryCombo.getItem(index);
+ serverToDefaultPortCat.put(server, selectedCategory);
+ }
+ }
+
+ } );
+ }
+ private void serverComboChanged() {
+ JBossServer s = getSelectedServer();
+ if( s != null ) {
+ Object o = serverToCategoryList.get(s);
+ ArrayList list;
+ if( o == null ) {
+ ServerAttributeHelper helper = getAttributeHelper(s);
+ SimpleXPathPreferenceTreeItem tree = helper.getXPathPreferenceTree();
+ SimpleTreeItem[] children = tree.getChildren2();
+ String[] categoryNames = new String[children.length];
+ for( int i = 0; i < children.length; i++ ) {
+ categoryNames[i] = (String)children[i].getData();
+ }
+ list = new ArrayList();
+ list.addAll(Arrays.asList(categoryNames));
+ String portDir = helper.getDefaultPortCategoryName();
+ serverToDefaultPortCat.put(s, portDir);
+ serverToCategoryList.put(s, list);
+ } else {
+ list = (ArrayList)o;
+ }
+ portsCategoryCombo.setItems((String[]) list
+ .toArray(new String[list.size()]));
+
+ String portDir = (String)serverToDefaultPortCat.get(s);
+ if( portDir != null ) {
+ int index2 = portsCategoryCombo.indexOf(portDir);
+ portsCategoryCombo.select(index2);
+ }
+ }
+ }
+ private JBossServer getSelectedServer() {
+ int index = serversCombo.getSelectionIndex();
+ String selected = serversCombo.getItem(index);
+ if( selected == null ) return null;
+
+ for( int i = 0; i < servers.length; i++ ) {
+ if( servers[i].getServer().getName().equals(selected)) {
+ return servers[i];
+ }
+ }
+ return null;
+ }
+
+ protected void fillViewDetails(Composite c) {
+ FormData vdcData = new FormData();
+ vdcData.left = new FormAttachment(0,5);
+ vdcData.top = new FormAttachment(0,5);
+ c.setLayoutData(vdcData);
+
+ c.setLayout(new RowLayout(SWT.VERTICAL));
+
+ simple = new Button(c, SWT.RADIO);
+ complex = new Button(c, SWT.RADIO);
+
+ simple.setText(Messages.DescriptorXPathSimple);
+ complex.setText(Messages.DescriptorXPathComplex);
+
+ boolean prefVal = JBossServerUIPlugin.getDefault().getPreferenceStore().getBoolean(PREFERENCE_KEY);
+ simple.setSelection(prefVal == SIMPLE);
+ complex.setSelection(prefVal == COMPLEX);
+ }
+
+ public boolean isValid() {
+ return true;
+ }
+ public boolean performCancel() {
+ return true;
+ }
+ public boolean performOk() {
+ boolean simp = simple.getSelection() == true ? SIMPLE : COMPLEX;
+ setSimple(simp == SIMPLE);
+
+ // now save default port categories
+ ServerAttributeHelper helper;
+ for( int i = 0; i < servers.length; i++ ) {
+ helper = (ServerAttributeHelper)serverToAttributeHelper.get(servers[i]);
+ String category = (String)serverToDefaultPortCat.get(servers[i]);
+ if( category != null ) {
+ helper.setDefaultPortCategoryName(category);
+ helper.save();
+ }
+ }
+ return true;
+ }
+ public void dispose() {
+ super.dispose();
+ }
+ }
+
+
+
+
+ // Property Sheet Page
+ public IPropertySheetPage getPropertySheetPage() {
+ if( propertyPage == null ) {
+ propertyPage = new DescriptorXPathPropertySheetPage();
+ }
+ return propertyPage;
+ }
+
+ public class DescriptorXPathPropertySheetPage implements IPropertySheetPage {
+ private TreeViewer xpathTreeViewer;
+ private TreeColumn column, column2, column3;
+ private Tree xpathTree;
+ private XPathPropertyLabelProvider labelProvider;
+
+ private Group xPathGroup;
+
+ public void createControl(Composite parent) {
+ createXPathGroup(parent);
+ addViewerMenus();
+ }
+
+ public XPathPropertyLabelProvider getLabelProvider() {
+ if( labelProvider == null ) {
+ labelProvider = new XPathPropertyLabelProvider();
+ }
+ return labelProvider;
+ }
+
+ private void addViewerMenus() {
+ MenuManager menuManager = new MenuManager("#PopupMenu");
+ menuManager.setRemoveAllWhenShown(true);
+ final Shell shell = xpathTree.getShell();
+ menuManager.addMenuListener(new IMenuListener() {
+ public void menuAboutToShow(IMenuManager mgr) {
+ xpathTreeMenuAboutToShow(shell, mgr);
+ }
+ });
+ Menu menu = menuManager.createContextMenu(xpathTree);
+ xpathTree.setMenu(menu);
+ }
+
+ private void xpathTreeMenuAboutToShow(Shell shell, IMenuManager menu) {
+ menu.add(newXPathAction);
+ if( getPropertySelection() != null && getPropertySelection() instanceof XPathPreferenceTreeItem) {
+ menu.add(editXPathAction);
+ menu.add(deleteXPathAction);
+ }
+ }
+
+ public void setSimple(boolean simple) {
+ boolean showSimple = showSimple();
+
+ if( showSimple != simple ) {
+ JBossServerUIPlugin.getDefault().getPreferenceStore().setValue(PREFERENCE_KEY, simple == SIMPLE);
+ JBossServerUIPlugin.getDefault().savePluginPreferences();
+
+ // if the properties page isn't opened, it'll throw nulls
+ try {
+ if( simple ) {
+ getLabelProvider().setSimple(true);
+ column3.setText("");
+ column2.setText(Messages.DescriptorXPathAttributeValue);
+ xpathTreeViewer.refresh();
+ } else {
+ getLabelProvider().setSimple(false);
+ column3.setText(Messages.DescriptorXPathXPathXML);
+ column2.setText(Messages.DescriptorXPathAttributeKeyValue);
+ xpathTreeViewer.refresh();
+ }
+ } catch ( Exception e ) {
+ }
+ }
+ }
+
+ public void dispose() {
+ }
+
+ public Control getControl() {
+ return xPathGroup;
+ }
+
+ public void setActionBars(IActionBars actionBars) {
}
+ public void setFocus() {
+ }
+
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ //input = null;
+ Object element = ((IStructuredSelection)selection).getFirstElement();
+ if( element instanceof ContentWrapper ) {
+ element = ((ContentWrapper)element).getElement();
+ }
+ if( element != null && element != getActiveCategory()) {
+ setActiveCategory(element);
+ forceDescriptorRefresh(element);
+ }
+ }
+
+ protected void forceDescriptorRefresh(final Object element) {
+ IRunnableWithProgress op = new IRunnableWithProgress() {
+ public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+ final IProgressMonitor monitor2 = monitor;
+ jbServer.getDescriptorModel().refreshDescriptors(monitor2);
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ xpathTreeViewer.setInput(element);
+ xpathTreeViewer.expandToLevel(2);
+ //jbServer.getAttributeHelper().setServerPorts(root);
+ }
+ });
+ }
+ };
+ try {
+ new ProgressMonitorDialog(new Shell()).run(false, true, op);
+ } catch( Exception e) {
+ e.printStackTrace();
+ }
+ }
-
protected class XPathTreeLabelProvider implements ITableLabelProvider {
public Image getColumnImage(Object element, int columnIndex) {
return null;
@@ -564,7 +750,6 @@
public void handleEvent (Event event) {
-// final TreeItem item = (TreeItem) event.item;
TreeItem[] selectedItems = xpathTree.getSelection();
if( selectedItems.length != 1 ) return;
@@ -650,7 +835,6 @@
xPathGroup.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
- input = null;
}
} );
@@ -703,6 +887,16 @@
final XPathTreeSelectionListener selListener = new XPathTreeSelectionListener();
xpathTree.addListener (SWT.MouseDoubleClick, selListener);
+ xpathTree.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ public void widgetSelected(SelectionEvent e) {
+ if( xpathTree.getSelection().length == 1 ) {
+ Object sel = xpathTree.getSelection()[0].getData();
+ setPropertySelection(sel);
+ }
+ }
+ });
// alerts the top listener as to the mouse position, to know which column is serverViewerSelection
xpathTree.addListener(SWT.MouseMove, new Listener() {
@@ -810,247 +1004,6 @@
}
}
- protected class XPathPropertyContentProvider implements ITreeContentProvider {
-
- private SimpleXPathPreferenceTreeItem category;
-
- public Object[] getChildren(Object parentElement) {
- // we're a leaf
- if( parentElement instanceof XPathTreeItem2 )
- return new Object[0];
-
- // we're a file node (blah.xml)
- if( parentElement instanceof XPathTreeItem ) {
- if( ((XPathTreeItem)parentElement).getChildren2().length > 1 )
- return ((XPathTreeItem)parentElement).getChildren2();
- return new Object[0];
- }
-
- // we're the named element (JNDI)
- if( parentElement instanceof XPathPreferenceTreeItem ) {
- SimpleTreeItem[] kids = ((XPathPreferenceTreeItem)parentElement).getChildren2();
- return kids;
- }
-
- // re-creates it from scratch... hrmm
- if( parentElement instanceof ServerViewProvider )
- return jbServer.getAttributeHelper().getXPathPreferenceTree().getChildren2();
- return new Object[0];
- }
- public Object getParent(Object element) {
- return null;
- }
- public boolean hasChildren(Object element) {
- return getChildren(element).length > 0 ? true : false;
- }
- public Object[] getElements(Object inputElement) {
- if( inputElement instanceof SimpleXPathPreferenceTreeItem ) {
- SimpleTreeItem[] items = ((SimpleXPathPreferenceTreeItem)inputElement).getChildren2();
- for( int i = 0; i < items.length; i++ )
- ensureLoaded((SimpleXPathPreferenceTreeItem)items[i]);
- return items;
- }
- return new Object[0];
- }
- public void ensureLoaded(SimpleXPathPreferenceTreeItem item) {
- if( item instanceof XPathPreferenceTreeItem ) {
- ((XPathPreferenceTreeItem)item).ensureLoaded(jbServer);
- }
- }
-
-
- public void dispose() {
- }
- public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
- category = (SimpleXPathPreferenceTreeItem) newInput;
- }
-
- }
-
- public ViewProviderPreferenceComposite createPreferenceComposite(Composite parent) {
- return new DescriptorPreferencePage(parent);
- }
-
- public class DescriptorPreferencePage extends ViewProviderPreferenceComposite {
-
- private Button simple, complex;
- private Combo portsCategoryCombo;
- private Combo serversCombo;
-
- private JBossServer[] servers;
-
- private HashMap serverToCategoryList;
- private HashMap serverToDefaultPortCat;
- private HashMap serverToAttributeHelper;
-
- public DescriptorPreferencePage(Composite parent) {
- super(parent, SWT.NONE);
- setLayout(new FormLayout());
-
- serverToCategoryList = new HashMap();
- serverToDefaultPortCat = new HashMap();
- serverToAttributeHelper = new HashMap();
-
-
- Composite viewDetailsComp = new Composite(this, SWT.NONE);
- fillViewDetails(viewDetailsComp);
-
- Composite defaultPortComp = new Composite(this, SWT.BORDER);
- FormData portData = new FormData();
- portData.left = new FormAttachment(0,5);
- portData.top = new FormAttachment(viewDetailsComp,5);
- portData.right = new FormAttachment(50,-5);
- defaultPortComp.setLayoutData(portData);
- fillPortPreferences(defaultPortComp);
- }
-
- private ServerAttributeHelper getAttributeHelper(JBossServer server) {
- Object helper = serverToAttributeHelper.get(server);
- if( helper == null ) {
- helper = server.getAttributeHelper();
- serverToAttributeHelper.put(server, helper);
- }
- return (ServerAttributeHelper)helper;
- }
-
- protected void fillPortPreferences(Composite portComp) {
- portComp.setLayout(new RowLayout(SWT.VERTICAL));
-
- servers = JBossServerCore.getAllJBossServers();
- String[] serverNames = new String[servers.length];
- for( int i = 0; i < servers.length; i++ )
- serverNames[i] = servers[i].getServer().getName();
-
- portComp.setLayout(new RowLayout(SWT.VERTICAL));
-
- Label nameLabel = new Label(portComp, SWT.NONE);
- nameLabel.setText(Messages.DescriptorXPathServerName);
-
- serversCombo = new Combo(portComp, SWT.READ_ONLY);
- serversCombo.setItems(serverNames);
-
- Label categoryLabel = new Label(portComp, SWT.NONE);
- categoryLabel.setText(Messages.DescriptorXPathPortCategory);
-
- portsCategoryCombo = new Combo(portComp, SWT.READ_ONLY);
-
-
- serversCombo.addSelectionListener(new SelectionListener() {
-
- public void widgetDefaultSelected(SelectionEvent e) {
- }
-
- public void widgetSelected(SelectionEvent e) {
- serverComboChanged();
- }
- });
-
- portsCategoryCombo.addSelectionListener(new SelectionListener() {
- public void widgetDefaultSelected(SelectionEvent e) {
- }
- public void widgetSelected(SelectionEvent e) {
- JBossServer server = getSelectedServer();
- if( server != null ) {
- int index = portsCategoryCombo.getSelectionIndex();
- String selectedCategory = portsCategoryCombo.getItem(index);
- serverToDefaultPortCat.put(server, selectedCategory);
- }
- }
-
- } );
- }
- private void serverComboChanged() {
- JBossServer s = getSelectedServer();
- if( s != null ) {
- Object o = serverToCategoryList.get(s);
- ArrayList list;
- if( o == null ) {
- ServerAttributeHelper helper = getAttributeHelper(s);
- SimpleXPathPreferenceTreeItem tree = helper.getXPathPreferenceTree();
- SimpleTreeItem[] children = tree.getChildren2();
- String[] categoryNames = new String[children.length];
- for( int i = 0; i < children.length; i++ ) {
- categoryNames[i] = (String)children[i].getData();
- }
- list = new ArrayList();
- list.addAll(Arrays.asList(categoryNames));
- String portDir = helper.getDefaultPortCategoryName();
- serverToDefaultPortCat.put(s, portDir);
- serverToCategoryList.put(s, list);
- } else {
- list = (ArrayList)o;
- }
- portsCategoryCombo.setItems((String[]) list
- .toArray(new String[list.size()]));
-
- String portDir = (String)serverToDefaultPortCat.get(s);
- if( portDir != null ) {
- int index2 = portsCategoryCombo.indexOf(portDir);
- portsCategoryCombo.select(index2);
- }
- }
- }
- private JBossServer getSelectedServer() {
- int index = serversCombo.getSelectionIndex();
- String selected = serversCombo.getItem(index);
- if( selected == null ) return null;
-
- for( int i = 0; i < servers.length; i++ ) {
- if( servers[i].getServer().getName().equals(selected)) {
- return servers[i];
- }
- }
- return null;
- }
-
- protected void fillViewDetails(Composite c) {
- FormData vdcData = new FormData();
- vdcData.left = new FormAttachment(0,5);
- vdcData.top = new FormAttachment(0,5);
- c.setLayoutData(vdcData);
-
- c.setLayout(new RowLayout(SWT.VERTICAL));
-
- simple = new Button(c, SWT.RADIO);
- complex = new Button(c, SWT.RADIO);
-
- simple.setText(Messages.DescriptorXPathSimple);
- complex.setText(Messages.DescriptorXPathComplex);
-
- boolean prefVal = JBossServerUIPlugin.getDefault().getPreferenceStore().getBoolean(PREFERENCE_KEY);
- simple.setSelection(prefVal == SIMPLE);
- complex.setSelection(prefVal == COMPLEX);
- }
-
- public boolean isValid() {
- return true;
- }
- public boolean performCancel() {
- return true;
- }
- public boolean performOk() {
- boolean simp = simple.getSelection() == true ? SIMPLE : COMPLEX;
- propertyPage.setSimple(simp == SIMPLE);
-
- // now save default port categories
- ServerAttributeHelper helper;
- for( int i = 0; i < servers.length; i++ ) {
- helper = (ServerAttributeHelper)serverToAttributeHelper.get(servers[i]);
- String category = (String)serverToDefaultPortCat.get(servers[i]);
- if( category != null ) {
- helper.setDefaultPortCategoryName(category);
- helper.save();
- }
- }
-
-
- return true;
- }
- public void dispose() {
- super.dispose();
- }
- }
-
public static class XPathPropertyLabelProvider extends LabelProvider implements ITableLabelProvider {
private boolean simple = false;
@@ -1094,6 +1047,7 @@
}
}
+
protected void refreshViewer() {
if( isEnabled() ) {
try {
@@ -1106,4 +1060,54 @@
}
}
+
+ protected class XPathPropertyContentProvider implements ITreeContentProvider {
+ public Object[] getChildren(Object parentElement) {
+ // we're a leaf
+ if( parentElement instanceof XPathTreeItem2 )
+ return new Object[0];
+
+ // we're a file node (blah.xml)
+ if( parentElement instanceof XPathTreeItem ) {
+ if( ((XPathTreeItem)parentElement).getChildren2().length > 1 )
+ return ((XPathTreeItem)parentElement).getChildren2();
+ return new Object[0];
+ }
+
+ // we're the named element (JNDI)
+ if( parentElement instanceof XPathPreferenceTreeItem ) {
+ SimpleTreeItem[] kids = ((XPathPreferenceTreeItem)parentElement).getChildren2();
+ return kids;
+ }
+
+ // re-creates it from scratch... hrmm
+ if( parentElement instanceof ServerViewProvider )
+ return jbServer.getAttributeHelper().getXPathPreferenceTree().getChildren2();
+ return new Object[0];
+ }
+ public Object getParent(Object element) {
+ return null;
+ }
+ public boolean hasChildren(Object element) {
+ return getChildren(element).length > 0 ? true : false;
+ }
+ public Object[] getElements(Object inputElement) {
+ if( inputElement instanceof SimpleXPathPreferenceTreeItem ) {
+ SimpleTreeItem[] items = ((SimpleXPathPreferenceTreeItem)inputElement).getChildren2();
+ for( int i = 0; i < items.length; i++ )
+ ensureLoaded((SimpleXPathPreferenceTreeItem)items[i]);
+ return items;
+ }
+ return new Object[0];
+ }
+ public void ensureLoaded(SimpleXPathPreferenceTreeItem item) {
+ if( item instanceof XPathPreferenceTreeItem ) {
+ ((XPathPreferenceTreeItem)item).ensureLoaded(jbServer);
+ }
+ }
+ public void dispose() {
+ }
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+ }
+ }
}
More information about the jboss-cvs-commits
mailing list