From: Robert S. <ra...@gm...> - 2006-06-27 07:07:34
|
User: rawb Date: 06/06/27 03:07:30 Modified: as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views JBossServerTableViewer.java JBossServerView.java Log: Pulled out the properties section to work in the property's view instead. Added some default property sheet pages for implementers to use. Ensured view extensions' icons worked in the label provider. Ensured proper calls of dispose() are made. Lots of other small things. Revision Changes Path 1.4 +233 -49 jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/JBossServerTableViewer.java (In the diff below, changes in quantity of whitespace are not shown.) Index: JBossServerTableViewer.java =================================================================== RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/JBossServerTableViewer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -b -r1.3 -r1.4 --- JBossServerTableViewer.java 24 Jun 2006 01:20:51 -0000 1.3 +++ JBossServerTableViewer.java 27 Jun 2006 07:07:30 -0000 1.4 @@ -1,69 +1,95 @@ package org.jboss.ide.eclipse.as.ui.views; -import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Date; +import java.util.Properties; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; -import org.eclipse.ui.ISharedImages; -import org.eclipse.ui.PlatformUI; -import org.eclipse.wst.server.core.IModule; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.part.PageBook; +import org.eclipse.ui.views.properties.IPropertySheetPage; import org.eclipse.wst.server.core.IServer; -import org.eclipse.wst.server.core.IServerType; import org.eclipse.wst.server.ui.ServerUICore; -import org.eclipse.wst.server.ui.internal.provisional.UIDecoratorManager; -import org.eclipse.wst.server.ui.internal.view.servers.ServerTableLabelProvider; import org.jboss.ide.eclipse.as.core.JBossServerCore; -import org.jboss.ide.eclipse.as.core.model.ServerProcessModel; -import org.jboss.ide.eclipse.as.core.model.ServerProcessLog.ProcessLogEvent; -import org.jboss.ide.eclipse.as.core.model.ServerProcessModel.ServerProcessModelEntity; -import org.jboss.ide.eclipse.as.core.server.IServerLogListener; import org.jboss.ide.eclipse.as.core.server.JBossServer; +import org.jboss.ide.eclipse.as.core.util.ASDebug; import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin; -import org.jboss.ide.eclipse.as.ui.JBossServerUISharedImages; import org.jboss.ide.eclipse.as.ui.Messages; import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin.ServerViewProvider; +import org.jboss.ide.eclipse.as.ui.viewproviders.PropertySheetFactory; +import org.jboss.ide.eclipse.as.ui.viewproviders.PropertySheetFactory.ISimplePropertiesHolder; +import org.jboss.ide.eclipse.as.ui.viewproviders.PropertySheetFactory.SimplePropertiesPropertySheetPage; public class JBossServerTableViewer extends TreeViewer { + protected TableViewerPropertySheet propertySheet; + public JBossServerTableViewer(Tree tree) { super(tree); - setContentProvider(new ContentProviderDelegator()); setLabelProvider(new LabelProviderDelegator()); + //topLevelPropertiesPage = PropertySheetFactory.createSimplePropertiesSheet(new TopLevelProperties()); + propertySheet = new TableViewerPropertySheet(); + } + + public static class ContentWrapper { + private Object o; + private ServerViewProvider provider; + + public ContentWrapper(Object o, ServerViewProvider provider) { + this.o = o; + this.provider = provider; } + public Object getElement() { + return o; + } + + public ServerViewProvider getProvider() { + return provider; + } + + public boolean equals(Object other) { + if( other == null ) return false; + if( other instanceof ContentWrapper ) { + return ((ContentWrapper)other).getElement().equals(o); + } + return false; + } + public int hashCode() { + return o.hashCode(); + } + } protected class LabelProviderDelegator extends LabelProvider { public String getText(Object obj) { if( obj instanceof JBossServer) { JBossServer server = (JBossServer)obj; String ret = server.getServer().getName(); -// ret += " ("; -// String home = server.getRuntimeConfiguration().getServerHome(); -// ret += (home.length() > 30 ? home.substring(0,30) + "..." : home); -// ret += ", " + server.getRuntimeConfiguration().getJbossConfiguration() + ")"; return ret; } if( obj instanceof ServerViewProvider) { return ((ServerViewProvider)obj).getName(); } - try { - return getParentViewProvider(obj).getDelegate().getLabelProvider().getText(obj); - } catch( Exception e) { + if( obj instanceof ContentWrapper ) { + ContentWrapper wrapper = (ContentWrapper)obj; + return wrapper.getProvider().getDelegate().getLabelProvider().getText(wrapper.getElement()); } return obj.toString(); } @@ -71,10 +97,15 @@ if( obj instanceof JBossServer ) { return ServerUICore.getLabelProvider().getImage(((JBossServer)obj).getServer()); } - try { - return getParentViewProvider(obj).getDelegate().getLabelProvider().getImage(obj); - } catch( Exception e) { + if( obj instanceof ServerViewProvider ) { + return ((ServerViewProvider)obj).getImage(); + } + + if( obj instanceof ContentWrapper ) { + Object object2 = ((ContentWrapper)obj).getElement(); + return ((ContentWrapper)obj).getProvider().getDelegate().getLabelProvider().getImage(object2); } + return null; } } @@ -83,6 +114,14 @@ public ContentProviderDelegator() { } + public ContentWrapper[] wrap( Object[] elements, ServerViewProvider provider ) { + ContentWrapper[] wrappers = new ContentWrapper[elements.length]; + for( int i = 0; i < wrappers.length; i++ ) { + wrappers[i] = new ContentWrapper(elements[i], provider); + } + return wrappers; + } + public Object[] getElements(Object inputElement) { return new Object[] { JBossServerCore.getServer((IServer)inputElement) }; } @@ -92,16 +131,23 @@ return JBossServerUIPlugin.getDefault().getEnabledViewProviders(); } if( parentElement instanceof ServerViewProvider) { - return ((ServerViewProvider)parentElement).getDelegate().getContentProvider().getChildren(parentElement); + Object[] ret = ((ServerViewProvider)parentElement).getDelegate().getContentProvider().getChildren(parentElement); + return wrap(ret, ((ServerViewProvider)parentElement)); } + if( parentElement instanceof ContentWrapper ) { + ContentWrapper parentWrapper = (ContentWrapper)parentElement; Object[] o = null; try { - o = getParentViewProvider(parentElement).getDelegate().getContentProvider().getChildren(parentElement); + o = parentWrapper.getProvider().getDelegate().getContentProvider().getChildren(parentWrapper.getElement()); } catch( Exception e) { } + if( o == null ) + return new Object[0]; + return wrap(o, parentWrapper.getProvider()); + } - return o == null ? new Object[0] : o; + return new Object[0]; } public Object getParent(Object element) { @@ -124,29 +170,38 @@ } + public Object getRawElement(Object o) { + if( o instanceof ContentWrapper ) + return ((ContentWrapper)o).getElement(); + return o; + } + public ServerViewProvider getParentViewProvider(Object o) { - ServerViewProvider[] providers = JBossServerUIPlugin.getDefault().getEnabledViewProviders(); - for( int i = 0; i < providers.length; i++ ) { - if( containsObject(providers[i], o)) { - return providers[i]; + if( o instanceof ContentWrapper ) + return ((ContentWrapper)o).getProvider(); + return null; } + + public Object getSelectedElement() { + ISelection sel = getSelection(); + if( sel instanceof IStructuredSelection ) { + return ((IStructuredSelection)sel).getFirstElement(); } return null; } - public boolean containsObject(ServerViewProvider provider, Object obj) { - Object parent = provider.getDelegate().getContentProvider().getParent(obj); - while( parent != null && !(parent instanceof ServerViewProvider)) { - parent = provider.getDelegate().getContentProvider().getParent(parent); + protected void fillSelectedContextMenu(Shell shell, IMenuManager mgr) { + ISelection sel = getSelection(); + if( sel instanceof IStructuredSelection ) { + Object selected = ((IStructuredSelection)sel).getFirstElement(); + if( selected != null ) { + ServerViewProvider provider = getParentViewProvider(selected); + if( provider != null ) + provider.getDelegate().fillContextMenu(shell, mgr, getRawElement(selected)); } - - if( parent instanceof ServerViewProvider ) - return true; - - return false; } - + } protected void fillJBContextMenu(Shell shell, IMenuManager menu) { Action action1 = new Action() { @@ -166,4 +221,133 @@ menu.add(action1); } + + public IPropertySheetPage getPropertySheet() { + return propertySheet; + } + + public class TableViewerPropertySheet implements IPropertySheetPage { + + private PageBook book; + private ArrayList addedControls = new ArrayList(); + private SimplePropertiesPropertySheetPage topLevelPropertiesPage; + + public void createControl(Composite parent) { + topLevelPropertiesPage = PropertySheetFactory.createSimplePropertiesSheet(new TopLevelProperties()); + book = new PageBook(parent, SWT.NONE); + topLevelPropertiesPage.createControl(book); + book.showPage(topLevelPropertiesPage.getControl()); + } + + public void dispose() { + } + + public Control getControl() { + return book; + } + + public void setActionBars(IActionBars actionBars) { + } + + public void setFocus() { + } + + public void selectionChanged(IWorkbenchPart part, ISelection sel) { + Object selected = getSelectedObject(sel); + if( selected != null ) { + + IPropertySheetPage page = null; + if( selected instanceof ContentWrapper ) { + page = getDelegatePage((ContentWrapper)selected); + } + + if( page == null ) { + page = topLevelPropertiesPage; + } + page.selectionChanged(part, sel); + book.showPage(page.getControl()); + } + } + private IPropertySheetPage getDelegatePage(ContentWrapper wrapper) { + ServerViewProvider provider = wrapper.getProvider(); + IPropertySheetPage returnSheet = null; + returnSheet = provider.getDelegate().getPropertySheetPage(); + if( !addedControls.contains(provider)) { + returnSheet.createControl(book); + addedControls.add(provider); + } + return returnSheet; + } + + public Object getSelectedObject(ISelection sel) { + if( sel instanceof IStructuredSelection ) { + IStructuredSelection selection = (IStructuredSelection)sel; + Object selected = selection.getFirstElement(); + return selected; + } + return null; + } + + } + /** + * Properties for the top level elements + * (a server or a category / extension point + * @author rstryker + * + */ + class TopLevelProperties implements ISimplePropertiesHolder { + public Properties getProperties(Object selected) { + Properties ret = new Properties(); + if( selected instanceof ServerViewProvider ) { + ServerViewProvider provider = (ServerViewProvider)selected; + ret.setProperty(Messages.ExtensionID, provider.getId()); + ret.setProperty(Messages.ExtensionName, provider.getName()); + ret.setProperty(Messages.ExtensionDescription, provider.getDescription()); + ret.setProperty(Messages.ExtensionProviderClass, provider.getDelegateName()); + } + + if( selected instanceof JBossServer) { + JBossServer server = (JBossServer)selected; + String home = server.getRuntimeConfiguration().getServerHome(); + + ret.setProperty(Messages.ServerRuntimeVersion, server.getJBossRuntime().getVersionDelegate().getId()); + ret.setProperty(Messages.ServerHome, home); + ret.setProperty(Messages.ServerConfigurationName, server.getRuntimeConfiguration().getJbossConfiguration()); + ret.setProperty(Messages.ServerDeployDir, + server.getRuntimeConfiguration().getDeployDirectory().replace(home, "(home)")); + } + return ret; + } + + + public String[] getPropertyKeys(Object selected) { + if( selected instanceof ServerViewProvider) { + return new String[] { + Messages.ExtensionName, Messages.ExtensionDescription, + Messages.ExtensionID, Messages.ExtensionProviderClass + }; + + } + if( selected instanceof JBossServer ) { + return new String[] { + Messages.ServerRuntimeVersion, Messages.ServerHome, + Messages.ServerConfigurationName, Messages.ServerDeployDir, + }; + } + return new String[] {}; + } + } + + public void dispose() { + ASDebug.p("Disposing", this); + + // The Loner + propertySheet.dispose(); + + ServerViewProvider[] providers = JBossServerUIPlugin.getDefault().getAllServerViewProviders(); + for( int i = 0; i < providers.length; i++ ) { + providers[i].dispose(); + } + } + } 1.5 +60 -293 jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/JBossServerView.java (In the diff below, changes in quantity of whitespace are not shown.) Index: JBossServerView.java =================================================================== RCS file: /cvsroot/jboss/jbosside/as/plugins/org.jboss.ide.eclipse.as.ui/jbossui/org/jboss/ide/eclipse/as/ui/views/JBossServerView.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -b -r1.4 -r1.5 --- JBossServerView.java 24 Jun 2006 01:23:33 -0000 1.4 +++ JBossServerView.java 27 Jun 2006 07:07:30 -0000 1.5 @@ -21,70 +21,52 @@ */ package org.jboss.ide.eclipse.as.ui.views; -import java.util.Properties; - -import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; -import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.TreeSelection; -import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Shell; -import org.eclipse.swt.widgets.Text; import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.TreeColumn; import org.eclipse.ui.IMemento; import org.eclipse.ui.IViewSite; import org.eclipse.ui.PartInitException; +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.wst.server.core.IServer; import org.eclipse.wst.server.ui.internal.ServerUIPlugin; import org.eclipse.wst.server.ui.internal.view.servers.ModuleServer; -import org.eclipse.wst.server.ui.internal.view.servers.ServerTableViewer; import org.eclipse.wst.server.ui.internal.view.servers.ServersView; -import org.jboss.ide.eclipse.as.core.server.JBossServer; -import org.jboss.ide.eclipse.as.core.util.ASDebug; -import org.jboss.ide.eclipse.as.ui.Messages; +import org.jboss.ide.eclipse.as.core.JBossServerCore; import org.jboss.ide.eclipse.as.ui.JBossServerUIPlugin.ServerViewProvider; -import org.jboss.ide.eclipse.as.ui.viewproviders.ISimplePropertiesHolder; -import org.jboss.ide.eclipse.as.ui.viewproviders.JBossServerViewExtension; -import org.jboss.ide.eclipse.as.ui.viewproviders.SimplePropertiesContentProvider; +import org.jboss.ide.eclipse.as.ui.viewproviders.PropertySheetFactory.JBossServersViewPropertySheetPage; public class JBossServerView extends ServersView { private static final String TAG_SASHFORM_HEIGHT = "sashformHeight"; - private static final String TAG_SASHFORM_PROPERTIES = "sashformProperties"; - private static final String PROPERTIES_COLUMNS = "propertiesColumns"; protected int[] sashRows; // For the sashform sashRows - protected int[] sashCols; // for the properties sashform - protected int[] propertyCols; // For the property columns protected SashForm form; - protected SashForm propertiesForm; protected JBossServerTableViewer jbViewer; protected Tree jbTreeTable; - protected TreeViewer propertiesViewer; - protected Text propertiesText; - - protected SimplePropertiesContentProvider topLevelPropertiesProvider; + protected JBossServersViewPropertySheetPage propertyPage; - protected Action hidePropertiesAction, hideTextAction, hidePropertiesAndTextAction; public static JBossServerView instance; public static JBossServerView getDefault() { @@ -104,12 +86,9 @@ addServerViewer(form); addSecondViewer(form); - addPropertyViewer(form); form.setWeights(sashRows); - propertiesForm.setWeights(sashCols); createActions(); addListeners(); - topLevelPropertiesProvider = new SimplePropertiesContentProvider(new TopLevelProperties()); doMenuStuff(parent); } @@ -118,94 +97,64 @@ child1.setLayout(new GridLayout()); super.createPartControl(child1); + tableViewer.setContentProvider(new TrimmedServerContentProvider()); } - private void addSecondViewer(Composite form) { - Composite child2 = new Composite(form,SWT.NONE); - child2.setLayout(new FillLayout()); - jbTreeTable = new Tree(child2, SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); - jbViewer = new JBossServerTableViewer(jbTreeTable); + /** + * Only shows the servers in the top part of the sashform + * @author rstryker + * + */ + public class TrimmedServerContentProvider implements IStructuredContentProvider, ITreeContentProvider { + public Object[] getElements(Object element) { + return JBossServerCore.getIServerJBossServers(); } - private void addPropertyViewer(Composite form) { - propertiesForm = new SashForm(form, SWT.HORIZONTAL); - propertiesForm.setLayout(new FillLayout()); - - Composite c1 = new Composite(propertiesForm, SWT.NONE); - c1.setLayout(new FillLayout()); - Tree tTable = new Tree(c1, SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.NONE); - tTable.setHeaderVisible(true); - tTable.setLinesVisible(true); - tTable.setLayoutData(new GridData(GridData.FILL_BOTH)); - tTable.setFont(c1.getFont()); - - TreeColumn column = new TreeColumn(tTable, SWT.SINGLE); - column.setText(Messages.property); - column.setWidth(propertyCols[0]); - - TreeColumn column2 = new TreeColumn(tTable, SWT.SINGLE); - column2.setText(Messages.value); - column2.setWidth(propertyCols[1]); - - propertiesViewer = new TreeViewer(tTable); - - Composite c2 = new Composite(propertiesForm, SWT.NONE); - c2.setLayout(new FillLayout()); - propertiesText = new Text(c2, SWT.BORDER); + public void inputChanged(Viewer theViewer, Object oldInput, Object newInput) { + // do nothing } - public void createActions() { - hidePropertiesAction = new Action() { - public void run() { - sashCols = propertiesForm.getWeights(); - if( sashCols[1] == 0 ) { - hidePropertiesAndText(); - } else { - sashCols[1] = 100; - sashCols[0] = 0; - propertiesForm.setWeights(sashCols); + public void dispose() { + // do nothing } + + public Object[] getChildren(Object element) { + return new Object[0]; } - }; - hidePropertiesAction.setText(Messages.HidePropertiesAction); - hideTextAction = new Action() { - public void run() { - sashCols = propertiesForm.getWeights(); - if( sashCols[0] == 0 ) { - hidePropertiesAndText(); - } else { - sashCols[0] = 100; - sashCols[1] = 0; - propertiesForm.setWeights(sashCols); + public Object getParent(Object element) { + return null; + } + + public boolean hasChildren(Object element) { + return false; } } - }; - hideTextAction.setText(Messages.HideTextAction); - hidePropertiesAndTextAction = new Action() { - public void run() { - hidePropertiesAndText(); + private void addSecondViewer(Composite form) { + Composite child2 = new Composite(form,SWT.NONE); + child2.setLayout(new FillLayout()); + jbTreeTable = new Tree(child2, SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER); + jbViewer = new JBossServerTableViewer(jbTreeTable); + getSite().setSelectionProvider(jbViewer); } - }; - hidePropertiesAndTextAction.setText(Messages.HideLowerFrameAction); + + + public void createActions() { } - public void hidePropertiesAndText() { - sashRows = form.getWeights(); - sashRows[2] = 0; - form.setWeights(sashRows); + public IServer getSelectedServer() { + return (IServer)jbViewer.getInput(); } public void refreshJBTree(ServerViewProvider provider) { - ASDebug.p("Refreshing the tree", this); final ServerViewProvider provider2 = provider; Display.getDefault().asyncExec(new Runnable() { public void run() { try { + Object[] selected = JBossServerView.this.jbViewer.getExpandedElements(); JBossServerView.this.jbViewer.refresh(provider2); - ISelection sel = JBossServerView.this.jbViewer.getSelection(); - JBossServerView.this.jbViewer.setSelection(sel); + JBossServerView.this.jbViewer.setExpandedElements(selected); } catch (Exception e) { // ignore } @@ -216,37 +165,6 @@ public void addListeners() { - jbViewer.addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - - // If the properties aren't showing, dont bother - if( form.getWeights()[2] == 0 ) - return; - - ISelection sel = event.getSelection(); - if( sel instanceof IStructuredSelection ) { - Object selected = ((IStructuredSelection)sel).getFirstElement(); - if( selected != null ) { - ServerViewProvider provider = jbViewer.getParentViewProvider(selected); - if( provider != null ) { - // We have a provider (extension) and a selected object. - // Maintain the properties / text boxes. - updatePropertiesTextViewers(provider, selected); - } else if( selected instanceof JBossServer || selected instanceof ServerViewProvider ){ - updatePropertiesTopLevel(selected); - } else { - clearPropertiesTextViewers(); - } - } else { - clearPropertiesTextViewers(); - } - propertiesForm.setWeights(sashCols); - } - } - - }); - - /* * Handles the selection of the server viewer which is embedded in my sashform */ @@ -262,114 +180,27 @@ if( selection == null ) return; - //if( jbViewer.getInput() != server ) { + if( server != jbViewer.getInput()) jbViewer.setInput(server); - //} } }); } - - public void clearPropertiesTextViewers() { - try { - propertiesViewer.setInput(null); - } catch( Exception e) {} - - propertiesText.setText(""); - sashCols[0] = 100; - sashCols[1] = 0; - } - - public void updatePropertiesTextViewers(ServerViewProvider provider, Object selected) { - // Surround the entire method - try { - - int propertiesType = provider.getDelegate().selectedObjectViewType(selected); - if( propertiesType == JBossServerViewExtension.PROPERTIES || - propertiesType == JBossServerViewExtension.PROPERTIES_AND_TEXT ) { - - propertiesViewer.setContentProvider(provider.getDelegate().getPropertiesContentProvider()); - propertiesViewer.setLabelProvider(provider.getDelegate().getPropertiesLabelProvider()); - propertiesViewer.setInput(selected); - propertiesViewer.refresh(); - - // set weights - if( propertiesType == JBossServerViewExtension.PROPERTIES) { - sashCols[0] = 100; - sashCols[1] = 0; - } else { - sashCols[0] = 50; - sashCols[1] = 50; - } - } else { - propertiesText.setText(provider.getDelegate().getPropertiesText(selected)); - sashCols[0] = 0; - sashCols[1] = 100; - } - - } catch( Exception e ) { - clearPropertiesTextViewers(); - } - - } - - public void updatePropertiesTopLevel(Object selected) { - propertiesViewer.setContentProvider(topLevelPropertiesProvider); - propertiesViewer.setLabelProvider(topLevelPropertiesProvider); - propertiesViewer.setInput(selected); - propertiesViewer.refresh(); - sashCols[0] = 100; - sashCols[1] = 0; - - } protected void doMenuStuff(Composite parent) { MenuManager menuManager = new MenuManager("#PopupMenu"); menuManager.setRemoveAllWhenShown(true); final Shell shell = jbTreeTable.getShell(); menuManager.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager mgr) { - ISelection sel = jbViewer.getSelection(); - if( sel instanceof IStructuredSelection ) { - Object selected = ((IStructuredSelection)sel).getFirstElement(); - if( selected != null ) { - ServerViewProvider provider = jbViewer.getParentViewProvider(selected); - if( provider != null ) - provider.getDelegate().fillContextMenu(shell, mgr, selected); - } - } + jbViewer.fillSelectedContextMenu(shell, mgr); mgr.add(new Separator()); jbViewer.fillJBContextMenu(shell, mgr); } }); Menu menu = menuManager.createContextMenu(parent); jbTreeTable.setMenu(menu); - - - - MenuManager menuManager2 = new MenuManager("#PopupMenu"); - menuManager2.setRemoveAllWhenShown(true); - final Shell shell2 = propertiesForm.getShell(); - menuManager2.addMenuListener(new IMenuListener() { - public void menuAboutToShow(IMenuManager mgr) { - fillPropertiesContextMenu(shell2, mgr); - } - }); - Menu menu2 = menuManager2.createContextMenu(parent); - propertiesViewer.getTree().setMenu(menu2); - propertiesText.setMenu(menu2); } - public void fillPropertiesContextMenu(Shell shell, IMenuManager mgr) { - sashCols = propertiesForm.getWeights(); - if( sashCols[0] != 0 ) - mgr.add(hidePropertiesAction); - if( sashCols[1] != 0 ) - mgr.add(hideTextAction); - - // If only one of the two are present, do not show the 'hide both' action - if( !(sashCols[0] != 0 && sashCols[1] == 0 || sashCols[1] != 0 && sashCols[0] == 0 )) - mgr.add(hidePropertiesAndTextAction); - } /** * Save / Load some state (width / height of boxes) */ @@ -377,9 +208,9 @@ super.init(site, memento); ServerUIPlugin.getPreferences().setShowOnActivity(false); int sum = 0; - sashRows = new int[3]; + sashRows = new int[2]; for (int i = 0; i < sashRows.length; i++) { - sashRows[i] = (i == sashRows.length-1 ? 100-sum : 50); + sashRows[i] = 50; if (memento != null) { Integer in = memento.getInteger(TAG_SASHFORM_HEIGHT + i); if (in != null && in.intValue() > 5) @@ -387,21 +218,6 @@ } sum += sashRows[i]; } - - sashCols = new int[2]; - sashCols[0] = 100; - sashCols[1] = 0; - - - propertyCols = new int[2]; - for (int i = 0; i < propertyCols.length; i++) { - propertyCols[i] = 100; - if (memento != null) { - Integer in = memento.getInteger(PROPERTIES_COLUMNS + i); - if (in != null && in.intValue() > 5) - propertyCols[i] = in.intValue(); - } - } } public void saveState(IMemento memento) { @@ -410,70 +226,21 @@ if (weights[i] != 0) memento.putInteger(TAG_SASHFORM_HEIGHT + i, weights[i]); } - - weights = propertiesForm.getWeights(); - for( int i = 0; i < weights.length; i++ ) { - if (weights[i] != 0) - memento.putInteger(TAG_SASHFORM_PROPERTIES + i, weights[i]); - } - - Tree propTree = propertiesViewer.getTree(); - TreeColumn[] columns = propTree.getColumns(); - for( int i = 0; i < columns.length; i++ ) { - memento.putInteger(PROPERTIES_COLUMNS + i, columns[i].getWidth()); - } - } - /** - * Properties for the top level elements - * (a server or a category / extension point - * @author rstryker - * - */ - class TopLevelProperties implements ISimplePropertiesHolder { - public Properties getProperties(Object selected) { - Properties ret = new Properties(); - if( selected instanceof ServerViewProvider ) { - ServerViewProvider provider = (ServerViewProvider)selected; - ret.setProperty(Messages.ExtensionID, provider.getId()); - ret.setProperty(Messages.ExtensionName, provider.getName()); - ret.setProperty(Messages.ExtensionDescription, provider.getDescription()); - ret.setProperty(Messages.ExtensionProviderClass, provider.getDelegateName()); - } - - if( selected instanceof JBossServer) { - JBossServer server = (JBossServer)selected; - String home = server.getRuntimeConfiguration().getServerHome(); - - ret.setProperty(Messages.ServerRuntimeVersion, server.getJBossRuntime().getVersionDelegate().getId()); - ret.setProperty(Messages.ServerHome, home); - ret.setProperty(Messages.ServerConfigurationName, server.getRuntimeConfiguration().getJbossConfiguration()); - ret.setProperty(Messages.ServerDeployDir, - server.getRuntimeConfiguration().getDeployDirectory().replace(home, "(home)")); - } - return ret; - } - - - public String[] getPropertyKeys(Object selected) { - if( selected instanceof ServerViewProvider) { - return new String[] { - Messages.ExtensionName, Messages.ExtensionDescription, - Messages.ExtensionID, Messages.ExtensionProviderClass - }; - - } - if( selected instanceof JBossServer ) { - return new String[] { - Messages.ServerRuntimeVersion, Messages.ServerHome, - Messages.ServerConfigurationName, Messages.ServerDeployDir, - }; + public Object getAdapter(Class adaptor) { + //ASDebug.p("It wants an adaptor: " + adaptor.getCanonicalName(), this); + if( adaptor == IPropertySheetPage.class) { + return jbViewer.getPropertySheet(); } - return new String[] {}; + return super.getAdapter(adaptor); } + + public void dispose() { + super.dispose(); + jbViewer.dispose(); } |