Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 61379 Details for
Bug 165565
MAX: Filtering, sorting of resources
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Filtering and Sorting as an extn point
MAX_Filtering_Extn_Point_on_16_March_07.txt (text/plain), 37.39 KB, created by
Hariharan L Narayanan
on 2007-03-20 09:25:27 EDT
(
hide
)
Description:
Filtering and Sorting as an extn point
Filename:
MIME Type:
Creator:
Hariharan L Narayanan
Created:
2007-03-20 09:25:27 EDT
Size:
37.39 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.tptp.monitoring.managedagent.ui >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/ManagedResourceNode.java >=================================================================== >RCS file: /cvsroot/ganges/org.eclipse.tptp.monitoring.managedagent.ui/src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/ManagedResourceNode.java,v >retrieving revision 1.3 >diff -u -r1.3 ManagedResourceNode.java >--- src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/ManagedResourceNode.java 8 Mar 2007 14:33:32 -0000 1.3 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/ManagedResourceNode.java 20 Mar 2007 13:22:48 -0000 >@@ -30,6 +30,7 @@ > import org.eclipse.tptp.monitoring.managedagent.provisional.model.Relationship; > import org.eclipse.tptp.monitoring.managedagent.provisional.model.ResourceStates; > import org.eclipse.tptp.monitoring.managedagent.provisional.model.util.ModelUtils; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ActionManager; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Filter; >@@ -83,7 +84,7 @@ > > private String _agentId = null; > >- private Filter _filter = null; >+ private Object _filter = null; > > private ManagedAgentCommandHelper _agent = null; > >@@ -103,7 +104,7 @@ > notifyProvider(); > } > >- public void setFilter(Filter filter){ >+ public void setFilter(Object filter){ > _filter = filter; > } > >@@ -156,14 +157,10 @@ > protected void performStructuralChanges(){ > // TODO should we synchronize on FilterUtil or an instance of it > List members = _resource.getMembers(); >- if( _filter != null ){ >- FilterUtil.setFilter(_filter); >- MAExplorerView.filterMatches = false; >- System.out.println("FILTER STRING: " + _filter.toString()); >- } >- >+ > if (members != null && members.size() != 0) { > Iterator i = _resource.getMembers().iterator(); >+ MAExplorerView.filterMatches = false; > while (i.hasNext()) { > ManagedResource member = (ManagedResource) i.next(); > >@@ -171,11 +168,17 @@ > > if( _filter != null) > { >- boolean match = FilterUtil.matchFilter(member); >- if(match) >- MAExplorerView.filterMatches = true; >- else >- continue; >+ String agentType = ModelUtils.extractFromConnProperties(member.getConnectionProperties(), ManagedAgentFactory.MANAGED_AGENT_TYPE); >+ IFilterProvider currentFilterProvider = MAExplorerView.getFilterProviderForAgentType(agentType); >+ if(currentFilterProvider != null) >+ { >+ currentFilterProvider.setFilter(_filter); >+ boolean match = currentFilterProvider.matchFilter(member); >+ if(match) >+ MAExplorerView.filterMatches = true; >+ else >+ continue; >+ } > } > > ManagedResourceNode memberNode = new ManagedResourceNode(_provider, this, member); >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/BrowserViewContentProvider.java >=================================================================== >RCS file: /cvsroot/ganges/org.eclipse.tptp.monitoring.managedagent.ui/src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/BrowserViewContentProvider.java,v >retrieving revision 1.3 >diff -u -r1.3 BrowserViewContentProvider.java >--- src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/BrowserViewContentProvider.java 8 Mar 2007 14:33:32 -0000 1.3 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/BrowserViewContentProvider.java 20 Mar 2007 13:22:48 -0000 >@@ -18,8 +18,12 @@ > import org.eclipse.jface.viewers.ITreeContentProvider; > import org.eclipse.jface.viewers.TreeViewer; > import org.eclipse.jface.viewers.Viewer; >+import org.eclipse.tptp.monitoring.managedagent.provisional.ManagedAgentFactory; > import org.eclipse.tptp.monitoring.managedagent.provisional.helper.ManagedAgentCommandHelper; > import org.eclipse.tptp.monitoring.managedagent.provisional.model.ManagedResource; >+import org.eclipse.tptp.monitoring.managedagent.provisional.model.ModelPackage; >+import org.eclipse.tptp.monitoring.managedagent.provisional.model.util.ModelUtils; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.adapters.IModelChangeAdapter; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.adapters.PropertyChangeModelAdapter; >@@ -100,7 +104,11 @@ > > mac.getManagedResource().eAdapters().add(this); > >- enableOrDisableSortAndFilter(mac.getManagedResource()); >+ ManagedResource mr = mac.getManagedResource(); >+ >+ enableOrDisableSortAndFilter(mr); >+ >+ > > //Apply Filter Here. if this managed resource satisfies the filter, then add the node > /*if(FilterUtil.getFilter() != null) >@@ -177,12 +185,19 @@ > } > } > >+ String agentType = ModelUtils.extractFromConnProperties(mr.getConnectionProperties(), ManagedAgentFactory.MANAGED_AGENT_TYPE); > if(view != null){ >- EList members = mr.getMembers(); >- if(members == null || members.size() == 0) >- view.disableFilterAndSorting(); >- else >- view.enableFilterAndSorting(); >+ IFilterProvider filterProvider = MAExplorerView.getFilterProviderForAgentType(agentType); >+ if(filterProvider != null) >+ view.setFilterProvider(filterProvider); >+ if(agentType.equals("WSDM")) >+ { >+ EList members = mr.getMembers(); >+ if(members == null || members.size() == 0) >+ view.disableFilterAndSorting(); >+ else >+ view.enableFilterAndSorting(); >+ } > } > } > >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/MAExplorerView.java >=================================================================== >RCS file: /cvsroot/ganges/org.eclipse.tptp.monitoring.managedagent.ui/src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/MAExplorerView.java,v >retrieving revision 1.4 >diff -u -r1.4 MAExplorerView.java >--- src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/MAExplorerView.java 8 Mar 2007 14:33:32 -0000 1.4 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/MAExplorerView.java 20 Mar 2007 13:22:48 -0000 >@@ -11,6 +11,11 @@ > *******************************************************************************/ > package org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui; > >+import java.util.Hashtable; >+ >+import org.eclipse.core.runtime.IConfigurationElement; >+import org.eclipse.core.runtime.IExtension; >+import org.eclipse.core.runtime.Platform; > import org.eclipse.hyades.models.hierarchy.TRCAgentProxy; > import org.eclipse.jface.action.Action; > import org.eclipse.jface.action.IMenuListener; >@@ -21,6 +26,7 @@ > import org.eclipse.jface.dialogs.MessageDialog; > import org.eclipse.jface.viewers.CellEditor; > import org.eclipse.jface.viewers.DecoratingLabelProvider; >+import org.eclipse.jface.viewers.IContentProvider; > import org.eclipse.jface.viewers.ISelection; > import org.eclipse.jface.viewers.ISelectionChangedListener; > import org.eclipse.jface.viewers.IStructuredSelection; >@@ -28,7 +34,6 @@ > import org.eclipse.jface.viewers.TableViewer; > import org.eclipse.jface.viewers.TextCellEditor; > import org.eclipse.jface.viewers.TreeViewer; >-import org.eclipse.jface.viewers.ViewerComparator; > import org.eclipse.swt.SWT; > import org.eclipse.swt.custom.CTabFolder; > import org.eclipse.swt.custom.CTabItem; >@@ -36,37 +41,27 @@ > import org.eclipse.swt.events.ModifyListener; > import org.eclipse.swt.events.SelectionAdapter; > import org.eclipse.swt.events.SelectionEvent; >-import org.eclipse.swt.graphics.Image; >-import org.eclipse.swt.graphics.Point; >-import org.eclipse.swt.graphics.Rectangle; > import org.eclipse.swt.layout.FillLayout; > import org.eclipse.swt.layout.GridData; > import org.eclipse.swt.layout.GridLayout; > import org.eclipse.swt.widgets.Button; > import org.eclipse.swt.widgets.Composite; > import org.eclipse.swt.widgets.Menu; >-import org.eclipse.swt.widgets.MenuItem; > import org.eclipse.swt.widgets.Table; > import org.eclipse.swt.widgets.TableColumn; > import org.eclipse.swt.widgets.TableItem; > import org.eclipse.swt.widgets.Text; >-import org.eclipse.swt.widgets.ToolBar; >-import org.eclipse.swt.widgets.ToolItem; >-import org.eclipse.swt.widgets.Tree; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.editor.PropertiesCellModifier; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.editor.PropertiesViewContentProvider; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.editor.PropertiesViewLabelProvider; >-import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Comparator; >-import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Filter; >-import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.FilterDialog; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.MaxFilterPreference; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.util.ImageUtil; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.BrowserLabelProvider; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.BrowserViewContentProvider; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.IBrowserNode; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.IViewContributor; >-import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.ManagedResourceNode; > import org.eclipse.ui.IWorkbenchActionConstants; > import org.eclipse.ui.PlatformUI; > import org.eclipse.ui.forms.widgets.FormToolkit; >@@ -85,6 +80,8 @@ > public static final String ID = "org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.MAExplorerView"; //$NON-NLS-1$ > > private static final int DEFAULT_PADDING = 5; >+ >+ public static final String FILTER_EXT_PT = "maxFilter"; > > /** > * The widget that shows our tree view >@@ -115,21 +112,13 @@ > > private static MAExplorerView _default = null; > >- private ViewerComparator _sorter; >- >- private boolean _sort = false; >- >- private Image _imgSort; >- >- private Image _imgFilter; >- >- private Image _imgUnSort; >- >- private MenuItem _miFilter; >+ public static boolean filterMatches = true; > >- private ToolItem _tiSort; >+ private IFilterProvider _filterProvider; > >- public static boolean filterMatches = true; >+ private Section _topologySection; >+ >+ private static Hashtable _filterProviders = new Hashtable(); > > /** > * The constructor. >@@ -166,6 +155,7 @@ > > layoutAgentTopologyTree(); > layoutDataPanels(); >+ loadFilterExtensions(); > } > > private void layoutDataPanels() { >@@ -387,19 +377,15 @@ > > parent.setLayout(layout); > >- Section label = _toolkit.createSection(parent, Section.TITLE_BAR); >- label.setText(Messages >+ _topologySection = _toolkit.createSection(parent, Section.TITLE_BAR); >+ _topologySection.setText(Messages > .getString("MAExplorerView.RESOURCE_TOPOLOGY.UI.")); //$NON-NLS-1$ > GridData gd = new GridData(); > gd.grabExcessHorizontalSpace = true; > gd.grabExcessVerticalSpace = false; > gd.horizontalAlignment = SWT.FILL; >- label.setLayoutData(gd); >+ _topologySection.setLayoutData(gd); > >- _sorter = new Comparator(); >- addSortAndFilterToolBar(label); >- disableFilterAndSorting(); >- > _topologyViewer = new TreeViewer(parent); > > gd = new GridData(); >@@ -500,125 +486,21 @@ > } > > private void addSortAndFilterToolBar(Section label) { >- Composite sfComp = _toolkit.createComposite(label); >- sfComp.setLayout(new FillLayout()); >- ToolBar tb = new ToolBar(sfComp, SWT.NONE); >- _tiSort = new ToolItem(tb, SWT.DROP_DOWN); >- _imgSort = ImageUtil.getImage(ImageUtil.SORT_IMAGE); >- _tiSort.setImage(_imgSort); >- >- _imgUnSort = ImageUtil.getImage(ImageUtil.UNSORT_IMAGE); >- >- Menu ddMenu = new Menu(_tiSort.getParent().getShell(), SWT.NONE); >- _miFilter = new MenuItem(ddMenu, SWT.NONE); >- _imgFilter = ImageUtil.getImage(ImageUtil.FILTER_IMAGE); >- _miFilter.setImage(_imgFilter); >- _miFilter.setText(Messages.getString("MAExplorerView.FILTER.UI.")); >- >- addMenuItemSelectionListener(); >- addToolItemSelectionListener(_tiSort, ddMenu); >- >+ if(_filterProvider == null) >+ { >+ return; >+ } >+ Composite sfComp = _filterProvider.createFilterUI(label); >+ if(sfComp == null) >+ { >+ return; >+ } > _toolkit.adapt(sfComp); > label.setTextClient(sfComp); >+ label.layout(true); > } > >- private void addMenuItemSelectionListener() { >- _miFilter.addSelectionListener(new SelectionAdapter() { >- public void widgetSelected(SelectionEvent se) { >- Filter filter = new FilterDialog().showWindow(); >- if (filter == null) { >- return; >- } >- >- IBrowserNode root = _topologyViewContentProvider.getRoot(); >- >- // if this is a service group then we can apply this filter >- // note that we do not check if it has members coz it might be an empty service group at this point and more members might be added later >- >- System.out.println("root instanceof ManagedResourceNode = "+(root instanceof ManagedResourceNode)); >- System.out.println(root.getClass()); >- Object[] children = root.getChildren(); >- >- // the first child is what we want >- IBrowserNode child = null; >- try{ >- child = (IBrowserNode) children[0]; >- }catch(ArrayIndexOutOfBoundsException ae){ >- >- } >- if(child != null >- && child instanceof ManagedResourceNode){ >- ((ManagedResourceNode)child).setFilter(filter); >- ((ManagedResourceNode)child).refresh(); >- if (!filterMatches) { >- MessageDialog >- .openInformation( >- _topologyViewer.getControl().getShell(), >- Messages >- .getString("MAExplorerView.FILTER.TITILE.UI."), >- Messages >- .getString("MAExplorerView.FILTER.MESSAGE.UI.")); >- //_topologyViewer.setInput(null); >- } >- } >- >- // this filtering must not be done here - it should be done by the ManagedResourceNode in figuring out which of its children to show >- /* >- Object[] children = root.getChildren(); >- for (int i = 0; i < children.length; i++) { >- root.removeChild((IBrowserNode) children[i]); >- } >- FilterUtil.setFilter(filter); >- System.out.println("FILTER STRING: " + filter.toString()); >- ManagedResource[] resources = FilterUtil.getManagedResources(); >- if (resources == null || resources.length<0) { >- return; >- } >- _topologyViewContentProvider.setFilterMatch(false); >- >- boolean match = _topologyViewContentProvider.getFilterMatch(); >- if (!match) { >- MessageDialog >- .openInformation( >- _topologyViewer.getControl().getShell(), >- Messages >- .getString("MAExplorerView.FILTER.TITILE.UI."), >- Messages >- .getString("MAExplorerView.FILTER.MESSAGE.UI.")); >- _topologyViewer.setInput(null); >- } >- */ >- } >- }); >- } >- >- private void addToolItemSelectionListener(ToolItem ti, final Menu ddMenu) { >- ti.addSelectionListener(new SelectionAdapter() { >- public void widgetSelected(SelectionEvent se) { >- ToolItem item = (ToolItem) se.widget; >- if (se.detail == SWT.ARROW) { >- // Determine where to put the dropdown list >- Rectangle rect = item.getBounds(); >- Point pt = item.getParent().toDisplay( >- new Point(rect.x, rect.y)); >- ddMenu.setLocation(pt.x, pt.y + rect.height); >- ddMenu.setVisible(true); >- } else { >- _sort = !_sort; >- if (_sort) { >- item.setImage(_imgUnSort); >- Tree tree = _topologyViewer.getTree(); >- if (tree != null) { >- _topologyViewer.setComparator(_sorter); >- } >- } else { >- item.setImage(_imgSort); >- _topologyViewer.setComparator(null); >- } >- } >- } >- }); >- } >+ > > private void makeActions() { > _refreshPropertiesAction = new Action() { >@@ -669,12 +551,60 @@ > > public void disableFilterAndSorting() > { >- _tiSort.setEnabled(false); >+ if(_filterProvider != null) >+ _filterProvider.enableFiltering(false); > } > > public void enableFilterAndSorting() > { >- _tiSort.setEnabled(true); >+ if(_filterProvider != null) >+ _filterProvider.enableFiltering(true); > } >- >+ >+ public void setFilterProvider(IFilterProvider provider) >+ { >+ this._filterProvider = provider; >+ addSortAndFilterToolBar(_topologySection); >+ disableFilterAndSorting(); >+ } >+ >+ public IFilterProvider getFilterProvider() >+ { >+ return this._filterProvider; >+ } >+ >+ public IContentProvider getContentProvider() >+ { >+ return _topologyViewContentProvider; >+ } >+ >+ private void loadFilterExtensions() >+ { >+ _filterProviders = new Hashtable(); >+ IExtension[] exts = Platform.getExtensionRegistry().getExtensionPoint(ManagedAgentUIPlugin.PLUGIN_ID, FILTER_EXT_PT).getExtensions(); >+ if(exts == null || exts.length == 0) >+ return; >+ for (int i = 0; i < exts.length; ++i) { >+ IConfigurationElement[] elements = exts[i].getConfigurationElements(); >+ for (int j = 0; j < elements.length; ++j) { >+ if ("MAXFilter".equals(elements[j].getName())) { //$NON-NLS-1$ >+ try { >+ IFilterProvider helper = (IFilterProvider) elements[j].createExecutableExtension("providerClass"); //$NON-NLS-1$ >+ helper.setMAXView(this); >+ String type = elements[j].getAttribute("agentType"); //$NON-NLS-1$ >+ //System.out.println("PC = " + elements[j].getAttribute("providerClass")); >+ _filterProviders.put(type, helper); >+ } catch (Exception e) { >+ e.printStackTrace(); >+ } >+ } >+ } >+ } >+ } >+ >+ public static IFilterProvider getFilterProviderForAgentType(String agentType) >+ { >+ return (IFilterProvider) _filterProviders.get(agentType); >+ } >+ > } >Index: plugin.xml >=================================================================== >RCS file: /cvsroot/ganges/org.eclipse.tptp.monitoring.managedagent.ui/plugin.xml,v >retrieving revision 1.1 >diff -u -r1.1 plugin.xml >--- plugin.xml 8 Feb 2007 19:41:52 -0000 1.1 >+++ plugin.xml 20 Mar 2007 13:22:48 -0000 >@@ -4,6 +4,7 @@ > <extension-point id="selectionListener" name="Selection Listener" schema="schema/selectionListener.exsd"/> > <extension-point id="actionProvider" name="Context menu action provider" schema="schema/actionProvider.exsd"/> > <extension-point id="connectionHelper" name="connectionHelper" schema="schema/connectionHelper.exsd"/> >+ <extension-point id="maxFilter" name="maxFilter" schema="schema/maxFilter.exsd"/> > <!-- sbalan > <extension-point id="changeBroker" name="ChangeBroker" schema="schema/changeBroker.exsd"/> > --> >@@ -99,6 +100,22 @@ > point="org.eclipse.ui.startup"> > <startup class="org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin"/> > </extension> >+ <extension >+ point="org.eclipse.tptp.monitoring.managedagent.ui.maxFilter" >+ name="MAXFilter"> >+ <MAXFilter >+ agentType="WSDM" >+ providerClass="org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.WSDMAgentFilterProvider"> >+ </MAXFilter> >+ </extension> >+ <extension >+ point="org.eclipse.tptp.monitoring.managedagent.ui.maxFilter" >+ name="MAXFilter"> >+ <MAXFilter >+ agentType="JMX" >+ providerClass="org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.JMXAgentFilterProvider"> >+ </MAXFilter> >+ </extension> > <!-- sbalan > <extension > point="org.eclipse.tptp.monitoring.managedagent.ui.changeBroker"> >Index: schema/maxFilter.exsd >=================================================================== >RCS file: schema/maxFilter.exsd >diff -N schema/maxFilter.exsd >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ schema/maxFilter.exsd 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,112 @@ >+<?xml version='1.0' encoding='UTF-8'?> >+<!-- Schema file written by PDE --> >+<schema targetNamespace="org.eclipse.tptp.monitoring.managedagent.ui"> >+<annotation> >+ <appInfo> >+ <meta.schema plugin="org.eclipse.tptp.monitoring.managedagent.ui" id="maxFilter" name="maxFilter"/> >+ </appInfo> >+ <documentation> >+ [Enter description of this extension point.] >+ </documentation> >+ </annotation> >+ >+ <element name="extension"> >+ <complexType> >+ <sequence> >+ <element ref="MAXFilter"/> >+ </sequence> >+ <attribute name="point" type="string" use="required"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ </attribute> >+ <attribute name="id" type="string"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ </attribute> >+ <attribute name="name" type="string"> >+ <annotation> >+ <documentation> >+ >+ </documentation> >+ <appInfo> >+ <meta.attribute translatable="true"/> >+ </appInfo> >+ </annotation> >+ </attribute> >+ </complexType> >+ </element> >+ >+ <element name="MAXFilter"> >+ <complexType> >+ <attribute name="agentType" type="string" use="required"> >+ <annotation> >+ <documentation> >+ This attribute specifies for which type of agent this filter is provided. >+ </documentation> >+ </annotation> >+ </attribute> >+ <attribute name="providerClass" type="string" use="required"> >+ <annotation> >+ <documentation> >+ This class should implement IFilterProvider interface. >+ </documentation> >+ <appInfo> >+ <meta.attribute kind="java" basedOn="org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider"/> >+ </appInfo> >+ </annotation> >+ </attribute> >+ </complexType> >+ </element> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="since"/> >+ </appInfo> >+ <documentation> >+ [Enter the first release in which this extension point appears.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="examples"/> >+ </appInfo> >+ <documentation> >+ [Enter extension point usage example here.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="apiInfo"/> >+ </appInfo> >+ <documentation> >+ [Enter API information here.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="implementation"/> >+ </appInfo> >+ <documentation> >+ [Enter information about supplied implementation of this extension point.] >+ </documentation> >+ </annotation> >+ >+ <annotation> >+ <appInfo> >+ <meta.section type="copyright"/> >+ </appInfo> >+ <documentation> >+ >+ </documentation> >+ </annotation> >+ >+</schema> >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/WSDMAgentFilterProvider.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/WSDMAgentFilterProvider.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/WSDMAgentFilterProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/WSDMAgentFilterProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,244 @@ >+/** >+ * >+ */ >+package org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter; >+ >+import org.eclipse.jface.dialogs.MessageDialog; >+import org.eclipse.jface.viewers.TreeViewer; >+import org.eclipse.jface.viewers.ViewerComparator; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.events.SelectionAdapter; >+import org.eclipse.swt.events.SelectionEvent; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.swt.graphics.Point; >+import org.eclipse.swt.graphics.Rectangle; >+import org.eclipse.swt.layout.FillLayout; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Control; >+import org.eclipse.swt.widgets.Menu; >+import org.eclipse.swt.widgets.MenuItem; >+import org.eclipse.swt.widgets.ToolBar; >+import org.eclipse.swt.widgets.ToolItem; >+import org.eclipse.swt.widgets.Tree; >+import org.eclipse.tptp.monitoring.managedagent.provisional.model.ManagedResource; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Comparator; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Filter; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.FilterDialog; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.FilterUtil; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.MAExplorerView; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.Messages; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.util.ImageUtil; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.BrowserViewContentProvider; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.IBrowserNode; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.ManagedResourceNode; >+import org.eclipse.ui.forms.widgets.FormToolkit; >+ >+public class WSDMAgentFilterProvider implements IFilterProvider >+{ >+ >+ private boolean _sort = false; >+ >+ private Image _imgSort; >+ >+ private Image _imgFilter; >+ >+ private Image _imgUnSort; >+ >+ private MenuItem _miFilter; >+ >+ private ToolItem _tiSort; >+ >+ private FormToolkit _toolkit; >+ >+ private MAExplorerView _view; >+ >+ private TreeViewer _topologyViewer; >+ >+ private ViewerComparator _sorter; >+ >+ private BrowserViewContentProvider _topologyViewContentProvider; >+ >+ private Composite _sfComp; >+ >+ private Object _filter; >+ >+ public WSDMAgentFilterProvider() >+ { >+ //findAndSetMAXView(); >+ _sorter = new Comparator(); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#createFilterUI(org.eclipse.swt.widgets.Composite) >+ */ >+ public Composite createFilterUI(Composite parent) >+ { >+ _toolkit = new FormToolkit(parent.getDisplay()); >+ _sfComp = _toolkit.createComposite(parent); >+ _sfComp.setLayout(new FillLayout()); >+ ToolBar tb = new ToolBar(_sfComp, SWT.NONE); >+ _tiSort = new ToolItem(tb, SWT.DROP_DOWN); >+ _imgSort = ImageUtil.getImage(ImageUtil.SORT_IMAGE); >+ _tiSort.setImage(_imgSort); >+ >+ _imgUnSort = ImageUtil.getImage(ImageUtil.UNSORT_IMAGE); >+ >+ Menu ddMenu = new Menu(_tiSort.getParent().getShell(), SWT.NONE); >+ _miFilter = new MenuItem(ddMenu, SWT.NONE); >+ _imgFilter = ImageUtil.getImage(ImageUtil.FILTER_IMAGE); >+ _miFilter.setImage(_imgFilter); >+ _miFilter.setText(Messages.getString("MAExplorerView.FILTER.UI.")); >+ >+ addMenuItemSelectionListener(); >+ addToolItemSelectionListener(_tiSort, ddMenu); >+ return _sfComp; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#getFilter() >+ */ >+ public Object getFilter() >+ { >+ return this._filter; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#matchFilter(java.lang.Object) >+ */ >+ public boolean matchFilter(Object resource) >+ { >+ return FilterUtil.matchFilter((ManagedResource) resource); >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#setFilter(java.lang.Object) >+ */ >+ public void setFilter(Object filter) >+ { >+ if(filter instanceof Filter) >+ FilterUtil.setFilter((Filter)filter); >+ this._filter = filter; >+ } >+ >+ private void addMenuItemSelectionListener() { >+ _miFilter.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent se) { >+ Filter filter = new FilterDialog().showWindow(); >+ if (filter == null) { >+ return; >+ } >+ >+ IBrowserNode root = _topologyViewContentProvider.getRoot(); >+ >+ // if this is a service group then we can apply this filter >+ // note that we do not check if it has members coz it might be an empty service group at this point and more members might be added later >+ >+ System.out.println("root instanceof ManagedResourceNode = "+(root instanceof ManagedResourceNode)); >+ System.out.println(root.getClass()); >+ Object[] children = root.getChildren(); >+ >+ // the first child is what we want >+ IBrowserNode child = null; >+ try{ >+ child = (IBrowserNode) children[0]; >+ }catch(ArrayIndexOutOfBoundsException ae){ >+ >+ } >+ if(child != null >+ && child instanceof ManagedResourceNode){ >+ ((ManagedResourceNode)child).setFilter(filter); >+ ((ManagedResourceNode)child).refresh(); >+ if (!MAExplorerView.filterMatches) { >+ MessageDialog >+ .openInformation( >+ _topologyViewer.getControl().getShell(), >+ Messages >+ .getString("MAExplorerView.FILTER.TITILE.UI."), >+ Messages >+ .getString("MAExplorerView.FILTER.MESSAGE.UI.")); >+ //_topologyViewer.setInput(null); >+ } >+ } >+ >+ // this filtering must not be done here - it should be done by the ManagedResourceNode in figuring out which of its children to show >+ /* >+ Object[] children = root.getChildren(); >+ for (int i = 0; i < children.length; i++) { >+ root.removeChild((IBrowserNode) children[i]); >+ } >+ FilterUtil.setFilter(filter); >+ System.out.println("FILTER STRING: " + filter.toString()); >+ ManagedResource[] resources = FilterUtil.getManagedResources(); >+ if (resources == null || resources.length<0) { >+ return; >+ } >+ _topologyViewContentProvider.setFilterMatch(false); >+ >+ boolean match = _topologyViewContentProvider.getFilterMatch(); >+ if (!match) { >+ MessageDialog >+ .openInformation( >+ _topologyViewer.getControl().getShell(), >+ Messages >+ .getString("MAExplorerView.FILTER.TITILE.UI."), >+ Messages >+ .getString("MAExplorerView.FILTER.MESSAGE.UI.")); >+ _topologyViewer.setInput(null); >+ } >+ */ >+ } >+ }); >+ } >+ >+ private void addToolItemSelectionListener(ToolItem ti, final Menu ddMenu) { >+ ti.addSelectionListener(new SelectionAdapter() { >+ public void widgetSelected(SelectionEvent se) { >+ ToolItem item = (ToolItem) se.widget; >+ if (se.detail == SWT.ARROW) { >+ // Determine where to put the dropdown list >+ Rectangle rect = item.getBounds(); >+ Point pt = item.getParent().toDisplay( >+ new Point(rect.x, rect.y)); >+ ddMenu.setLocation(pt.x, pt.y + rect.height); >+ ddMenu.setVisible(true); >+ } else { >+ _sort = !_sort; >+ if (_sort) { >+ item.setImage(_imgUnSort); >+ Tree tree = _topologyViewer.getTree(); >+ if (tree != null) { >+ _topologyViewer.setComparator(_sorter); >+ } >+ } else { >+ item.setImage(_imgSort); >+ _topologyViewer.setComparator(null); >+ } >+ } >+ } >+ }); >+ } >+ >+ public void setMAXView(MAExplorerView maxView) >+ { >+ if(maxView != null) >+ { >+ _view = maxView; >+ _topologyViewer = _view.getTopologyViewer(); >+ _topologyViewContentProvider = (BrowserViewContentProvider) _view.getContentProvider(); >+ //_view.setFilterProvider(this); >+ } >+ } >+ >+ public void enableFiltering(boolean enable) >+ { >+ _sfComp.setEnabled(enable); >+ Control controls[] = _sfComp.getChildren(); >+ if(controls == null || controls.length == 0) >+ return; >+ for(int i = 0; i < controls.length; i++) >+ { >+ controls[i].setEnabled(enable); >+ } >+ } >+ >+} >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/JMXAgentFilterProvider.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/JMXAgentFilterProvider.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/JMXAgentFilterProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/JMXAgentFilterProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,60 @@ >+/** >+ * >+ */ >+package org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter; >+ >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.MAExplorerView; >+ >+/** >+ * @author administrator >+ * >+ */ >+public class JMXAgentFilterProvider implements IFilterProvider { >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#createFilterUI(org.eclipse.swt.widgets.Composite) >+ */ >+ public Composite createFilterUI(Composite parent) { >+ // TODO Auto-generated method stub >+ return null; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#enableFiltering(boolean) >+ */ >+ public void enableFiltering(boolean enable) { >+ // TODO Auto-generated method stub >+ >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#getFilter() >+ */ >+ public Object getFilter() { >+ // TODO Auto-generated method stub >+ return null; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#matchFilter(java.lang.Object) >+ */ >+ public boolean matchFilter(Object resource) { >+ // TODO Auto-generated method stub >+ return false; >+ } >+ >+ /* (non-Javadoc) >+ * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#setFilter(java.lang.Object) >+ */ >+ public void setFilter(Object filter) { >+ // TODO Auto-generated method stub >+ >+ } >+ >+ public void setMAXView(MAExplorerView view) { >+ // TODO Auto-generated method stub >+ >+ } >+ >+} >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/IFilterProvider.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/IFilterProvider.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/IFilterProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/IFilterProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,59 @@ >+/******************************************************************************* >+ * Copyright (c) 2007 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * Balan Subramanian (bsubram@us.ibm.com) >+ * IBM Corporation - initial API and implementation >+ *******************************************************************************/ >+package org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter; >+ >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.MAExplorerView; >+ >+ >+public interface IFilterProvider >+{ >+ /** >+ * This method is used to set the filter for the FilterProvider class. The parameter has to be cast to the correspoding filter class<br/> >+ * and used. >+ * @param filter - Filter Object. >+ */ >+ public void setFilter(Object filter); >+ >+ /** >+ * This methods returns an Object reperenting the filter that is being set. To be cast to the required class before use. >+ * @return Filter object >+ */ >+ public Object getFilter(); >+ >+ /** >+ * Checks for the match criteria of the filter that is set using setFilter() method for the given resource object.<br/> >+ * >+ * @param resource >+ * @return true if the resource matches the filter. false otherwise. >+ */ >+ public boolean matchFilter(Object resource); >+ >+ /** >+ * Called for creating the UI for this filter provider. >+ * @param parent - parent Composite >+ * @return A Composite containing the UI of this filter provider >+ */ >+ public Composite createFilterUI(Composite parent); >+ >+ /** >+ *enables or disables filtering based on the parameter >+ * @param enable >+ */ >+ public void enableFiltering(boolean enable); >+ >+ /** >+ * Gives a handle for MAExplorerView so that it can be used to get its TreeViewer and ContentProvider.<br/>The user should not be calling this method. This method is called internally. >+ * @param view >+ */ >+ public void setMAXView(MAExplorerView view); >+}
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 165565
:
55492
|
60132
| 61379 |
61897