Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 165565 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/ManagedResourceNode.java (-13 / +16 lines)
Lines 30-35 Link Here
30
import org.eclipse.tptp.monitoring.managedagent.provisional.model.Relationship;
30
import org.eclipse.tptp.monitoring.managedagent.provisional.model.Relationship;
31
import org.eclipse.tptp.monitoring.managedagent.provisional.model.ResourceStates;
31
import org.eclipse.tptp.monitoring.managedagent.provisional.model.ResourceStates;
32
import org.eclipse.tptp.monitoring.managedagent.provisional.model.util.ModelUtils;
32
import org.eclipse.tptp.monitoring.managedagent.provisional.model.util.ModelUtils;
33
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider;
33
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ActionManager;
34
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ActionManager;
34
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin;
35
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin;
35
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Filter;
36
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Filter;
Lines 83-89 Link Here
83
84
84
	private String _agentId = null;
85
	private String _agentId = null;
85
	
86
	
86
	private Filter _filter = null;
87
	private Object _filter = null;
87
	
88
	
88
	private ManagedAgentCommandHelper _agent = null;
89
	private ManagedAgentCommandHelper _agent = null;
89
90
Lines 103-109 Link Here
103
		notifyProvider();
104
		notifyProvider();
104
	}
105
	}
105
	
106
	
106
	public void setFilter(Filter filter){
107
	public void setFilter(Object filter){
107
		_filter = filter;
108
		_filter = filter;
108
	}
109
	}
109
110
Lines 156-169 Link Here
156
	protected void performStructuralChanges(){
157
	protected void performStructuralChanges(){
157
		// TODO should we synchronize on FilterUtil or an instance of it
158
		// TODO should we synchronize on FilterUtil or an instance of it
158
		List members = _resource.getMembers();
159
		List members = _resource.getMembers();
159
		if( _filter != null ){
160
		
160
			FilterUtil.setFilter(_filter);
161
			MAExplorerView.filterMatches = false;
162
			System.out.println("FILTER STRING: " + _filter.toString());
163
		}
164
165
		if (members != null && members.size() != 0) {
161
		if (members != null && members.size() != 0) {
166
			Iterator i = _resource.getMembers().iterator();
162
			Iterator i = _resource.getMembers().iterator();
163
			MAExplorerView.filterMatches = false;
167
			while (i.hasNext()) {
164
			while (i.hasNext()) {
168
				ManagedResource member = (ManagedResource) i.next();
165
				ManagedResource member = (ManagedResource) i.next();
169
				
166
				
Lines 171-181 Link Here
171
				
168
				
172
				if( _filter != null)
169
				if( _filter != null)
173
				{
170
				{
174
					boolean match = FilterUtil.matchFilter(member);
171
					String agentType = ModelUtils.extractFromConnProperties(member.getConnectionProperties(), ManagedAgentFactory.MANAGED_AGENT_TYPE);
175
					if(match)
172
					IFilterProvider currentFilterProvider = MAExplorerView.getFilterProviderForAgentType(agentType);
176
						MAExplorerView.filterMatches = true;
173
					if(currentFilterProvider != null)
177
					else
174
					{
178
						continue;
175
						currentFilterProvider.setFilter(_filter);
176
						boolean match = currentFilterProvider.matchFilter(member);
177
						if(match)
178
							MAExplorerView.filterMatches = true;
179
						else
180
							continue;
181
					}
179
				}	
182
				}	
180
				
183
				
181
				ManagedResourceNode memberNode = new ManagedResourceNode(_provider, this, member);
184
				ManagedResourceNode memberNode = new ManagedResourceNode(_provider, this, member);
(-)src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/BrowserViewContentProvider.java (-6 / +21 lines)
Lines 18-25 Link Here
18
import org.eclipse.jface.viewers.ITreeContentProvider;
18
import org.eclipse.jface.viewers.ITreeContentProvider;
19
import org.eclipse.jface.viewers.TreeViewer;
19
import org.eclipse.jface.viewers.TreeViewer;
20
import org.eclipse.jface.viewers.Viewer;
20
import org.eclipse.jface.viewers.Viewer;
21
import org.eclipse.tptp.monitoring.managedagent.provisional.ManagedAgentFactory;
21
import org.eclipse.tptp.monitoring.managedagent.provisional.helper.ManagedAgentCommandHelper;
22
import org.eclipse.tptp.monitoring.managedagent.provisional.helper.ManagedAgentCommandHelper;
22
import org.eclipse.tptp.monitoring.managedagent.provisional.model.ManagedResource;
23
import org.eclipse.tptp.monitoring.managedagent.provisional.model.ManagedResource;
24
import org.eclipse.tptp.monitoring.managedagent.provisional.model.ModelPackage;
25
import org.eclipse.tptp.monitoring.managedagent.provisional.model.util.ModelUtils;
26
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider;
23
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin;
27
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin;
24
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.adapters.IModelChangeAdapter;
28
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.adapters.IModelChangeAdapter;
25
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.adapters.PropertyChangeModelAdapter;
29
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.adapters.PropertyChangeModelAdapter;
Lines 100-106 Link Here
100
		
104
		
101
		mac.getManagedResource().eAdapters().add(this);
105
		mac.getManagedResource().eAdapters().add(this);
102
		
106
		
103
		enableOrDisableSortAndFilter(mac.getManagedResource());
107
		ManagedResource mr = mac.getManagedResource();
108
		
109
		enableOrDisableSortAndFilter(mr);
110
		
111
	
104
		
112
		
105
		//Apply Filter Here. if this managed resource satisfies the filter, then add the node
113
		//Apply Filter Here. if this managed resource satisfies the filter, then add the node
106
		/*if(FilterUtil.getFilter() != null)
114
		/*if(FilterUtil.getFilter() != null)
Lines 177-188 Link Here
177
			}
185
			}
178
		}
186
		}
179
		
187
		
188
		String agentType = ModelUtils.extractFromConnProperties(mr.getConnectionProperties(), ManagedAgentFactory.MANAGED_AGENT_TYPE);
180
		if(view != null){
189
		if(view != null){
181
			EList members = mr.getMembers();
190
			IFilterProvider filterProvider = MAExplorerView.getFilterProviderForAgentType(agentType);
182
			if(members == null || members.size() == 0)
191
			if(filterProvider != null)
183
				view.disableFilterAndSorting();
192
				view.setFilterProvider(filterProvider);
184
			else
193
			if(agentType.equals("WSDM"))
185
				view.enableFilterAndSorting();
194
			{
195
				EList members = mr.getMembers();
196
				if(members == null || members.size() == 0)
197
					view.disableFilterAndSorting();
198
				else
199
					view.enableFilterAndSorting();
200
			}
186
		}
201
		}
187
	}
202
	}
188
	
203
	
(-)src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/MAExplorerView.java (-150 / +80 lines)
Lines 11-16 Link Here
11
 *******************************************************************************/
11
 *******************************************************************************/
12
package org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui;
12
package org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui;
13
13
14
import java.util.Hashtable;
15
16
import org.eclipse.core.runtime.IConfigurationElement;
17
import org.eclipse.core.runtime.IExtension;
18
import org.eclipse.core.runtime.Platform;
14
import org.eclipse.hyades.models.hierarchy.TRCAgentProxy;
19
import org.eclipse.hyades.models.hierarchy.TRCAgentProxy;
15
import org.eclipse.jface.action.Action;
20
import org.eclipse.jface.action.Action;
16
import org.eclipse.jface.action.IMenuListener;
21
import org.eclipse.jface.action.IMenuListener;
Lines 21-26 Link Here
21
import org.eclipse.jface.dialogs.MessageDialog;
26
import org.eclipse.jface.dialogs.MessageDialog;
22
import org.eclipse.jface.viewers.CellEditor;
27
import org.eclipse.jface.viewers.CellEditor;
23
import org.eclipse.jface.viewers.DecoratingLabelProvider;
28
import org.eclipse.jface.viewers.DecoratingLabelProvider;
29
import org.eclipse.jface.viewers.IContentProvider;
24
import org.eclipse.jface.viewers.ISelection;
30
import org.eclipse.jface.viewers.ISelection;
25
import org.eclipse.jface.viewers.ISelectionChangedListener;
31
import org.eclipse.jface.viewers.ISelectionChangedListener;
26
import org.eclipse.jface.viewers.IStructuredSelection;
32
import org.eclipse.jface.viewers.IStructuredSelection;
Lines 28-34 Link Here
28
import org.eclipse.jface.viewers.TableViewer;
34
import org.eclipse.jface.viewers.TableViewer;
29
import org.eclipse.jface.viewers.TextCellEditor;
35
import org.eclipse.jface.viewers.TextCellEditor;
30
import org.eclipse.jface.viewers.TreeViewer;
36
import org.eclipse.jface.viewers.TreeViewer;
31
import org.eclipse.jface.viewers.ViewerComparator;
32
import org.eclipse.swt.SWT;
37
import org.eclipse.swt.SWT;
33
import org.eclipse.swt.custom.CTabFolder;
38
import org.eclipse.swt.custom.CTabFolder;
34
import org.eclipse.swt.custom.CTabItem;
39
import org.eclipse.swt.custom.CTabItem;
Lines 36-72 Link Here
36
import org.eclipse.swt.events.ModifyListener;
41
import org.eclipse.swt.events.ModifyListener;
37
import org.eclipse.swt.events.SelectionAdapter;
42
import org.eclipse.swt.events.SelectionAdapter;
38
import org.eclipse.swt.events.SelectionEvent;
43
import org.eclipse.swt.events.SelectionEvent;
39
import org.eclipse.swt.graphics.Image;
40
import org.eclipse.swt.graphics.Point;
41
import org.eclipse.swt.graphics.Rectangle;
42
import org.eclipse.swt.layout.FillLayout;
44
import org.eclipse.swt.layout.FillLayout;
43
import org.eclipse.swt.layout.GridData;
45
import org.eclipse.swt.layout.GridData;
44
import org.eclipse.swt.layout.GridLayout;
46
import org.eclipse.swt.layout.GridLayout;
45
import org.eclipse.swt.widgets.Button;
47
import org.eclipse.swt.widgets.Button;
46
import org.eclipse.swt.widgets.Composite;
48
import org.eclipse.swt.widgets.Composite;
47
import org.eclipse.swt.widgets.Menu;
49
import org.eclipse.swt.widgets.Menu;
48
import org.eclipse.swt.widgets.MenuItem;
49
import org.eclipse.swt.widgets.Table;
50
import org.eclipse.swt.widgets.Table;
50
import org.eclipse.swt.widgets.TableColumn;
51
import org.eclipse.swt.widgets.TableColumn;
51
import org.eclipse.swt.widgets.TableItem;
52
import org.eclipse.swt.widgets.TableItem;
52
import org.eclipse.swt.widgets.Text;
53
import org.eclipse.swt.widgets.Text;
53
import org.eclipse.swt.widgets.ToolBar;
54
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider;
54
import org.eclipse.swt.widgets.ToolItem;
55
import org.eclipse.swt.widgets.Tree;
56
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin;
55
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin;
57
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.editor.PropertiesCellModifier;
56
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.editor.PropertiesCellModifier;
58
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.editor.PropertiesViewContentProvider;
57
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.editor.PropertiesViewContentProvider;
59
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.editor.PropertiesViewLabelProvider;
58
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.editor.PropertiesViewLabelProvider;
60
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Comparator;
61
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Filter;
62
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.FilterDialog;
63
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.MaxFilterPreference;
59
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.MaxFilterPreference;
64
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.util.ImageUtil;
60
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.util.ImageUtil;
65
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.BrowserLabelProvider;
61
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.BrowserLabelProvider;
66
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.BrowserViewContentProvider;
62
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.BrowserViewContentProvider;
67
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.IBrowserNode;
63
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.IBrowserNode;
68
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.IViewContributor;
64
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.IViewContributor;
69
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.ManagedResourceNode;
70
import org.eclipse.ui.IWorkbenchActionConstants;
65
import org.eclipse.ui.IWorkbenchActionConstants;
71
import org.eclipse.ui.PlatformUI;
66
import org.eclipse.ui.PlatformUI;
72
import org.eclipse.ui.forms.widgets.FormToolkit;
67
import org.eclipse.ui.forms.widgets.FormToolkit;
Lines 85-90 Link Here
85
	public static final String ID = "org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.MAExplorerView"; //$NON-NLS-1$
80
	public static final String ID = "org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.MAExplorerView"; //$NON-NLS-1$
86
81
87
	private static final int DEFAULT_PADDING = 5;
82
	private static final int DEFAULT_PADDING = 5;
83
	
84
	public static final String FILTER_EXT_PT = "maxFilter";
88
85
89
	/**
86
	/**
90
	 * The widget that shows our tree view
87
	 * The widget that shows our tree view
Lines 115-135 Link Here
115
112
116
	private static MAExplorerView _default = null;
113
	private static MAExplorerView _default = null;
117
114
118
	private ViewerComparator _sorter;
115
	public static boolean filterMatches = true;
119
120
	private boolean _sort = false;
121
122
	private Image _imgSort;
123
124
	private Image _imgFilter;
125
126
	private Image _imgUnSort;
127
128
	private MenuItem _miFilter;
129
	
116
	
130
	private ToolItem _tiSort;
117
	private IFilterProvider _filterProvider;
131
	
118
	
132
	public static boolean filterMatches = true;
119
	private Section _topologySection;
120
	
121
	private static Hashtable _filterProviders = new Hashtable();
133
122
134
	/**
123
	/**
135
	 * The constructor.
124
	 * The constructor.
Lines 166-171 Link Here
166
155
167
		layoutAgentTopologyTree();
156
		layoutAgentTopologyTree();
168
		layoutDataPanels();
157
		layoutDataPanels();
158
		loadFilterExtensions();
169
	}
159
	}
170
160
171
	private void layoutDataPanels() {
161
	private void layoutDataPanels() {
Lines 387-405 Link Here
387
377
388
		parent.setLayout(layout);
378
		parent.setLayout(layout);
389
379
390
		Section label = _toolkit.createSection(parent, Section.TITLE_BAR);
380
		_topologySection = _toolkit.createSection(parent, Section.TITLE_BAR);
391
		label.setText(Messages
381
		_topologySection.setText(Messages
392
				.getString("MAExplorerView.RESOURCE_TOPOLOGY.UI.")); //$NON-NLS-1$
382
				.getString("MAExplorerView.RESOURCE_TOPOLOGY.UI.")); //$NON-NLS-1$
393
		GridData gd = new GridData();
383
		GridData gd = new GridData();
394
		gd.grabExcessHorizontalSpace = true;
384
		gd.grabExcessHorizontalSpace = true;
395
		gd.grabExcessVerticalSpace = false;
385
		gd.grabExcessVerticalSpace = false;
396
		gd.horizontalAlignment = SWT.FILL;
386
		gd.horizontalAlignment = SWT.FILL;
397
		label.setLayoutData(gd);
387
		_topologySection.setLayoutData(gd);
398
		
388
		
399
		_sorter = new Comparator();
400
		addSortAndFilterToolBar(label);
401
		disableFilterAndSorting();
402
403
		_topologyViewer = new TreeViewer(parent);
389
		_topologyViewer = new TreeViewer(parent);
404
390
405
		gd = new GridData();
391
		gd = new GridData();
Lines 500-624 Link Here
500
	}
486
	}
501
487
502
	private void addSortAndFilterToolBar(Section label) {
488
	private void addSortAndFilterToolBar(Section label) {
503
		Composite sfComp = _toolkit.createComposite(label);
489
		if(_filterProvider == null)
504
		sfComp.setLayout(new FillLayout());
490
		{
505
		ToolBar tb = new ToolBar(sfComp, SWT.NONE);
491
			return;
506
		_tiSort = new ToolItem(tb, SWT.DROP_DOWN);
492
		}
507
		_imgSort = ImageUtil.getImage(ImageUtil.SORT_IMAGE);
493
		Composite sfComp = _filterProvider.createFilterUI(label);
508
		_tiSort.setImage(_imgSort);
494
		if(sfComp == null)
509
495
		{
510
		_imgUnSort = ImageUtil.getImage(ImageUtil.UNSORT_IMAGE);
496
			return;
511
497
		}
512
		Menu ddMenu = new Menu(_tiSort.getParent().getShell(), SWT.NONE);
513
		_miFilter = new MenuItem(ddMenu, SWT.NONE);
514
		_imgFilter = ImageUtil.getImage(ImageUtil.FILTER_IMAGE);
515
		_miFilter.setImage(_imgFilter);
516
		_miFilter.setText(Messages.getString("MAExplorerView.FILTER.UI."));
517
518
		addMenuItemSelectionListener();
519
		addToolItemSelectionListener(_tiSort, ddMenu);
520
521
		_toolkit.adapt(sfComp);
498
		_toolkit.adapt(sfComp);
522
		label.setTextClient(sfComp);
499
		label.setTextClient(sfComp);
500
		label.layout(true);
523
	}
501
	}
524
502
525
	private void addMenuItemSelectionListener() {
503
	
526
		_miFilter.addSelectionListener(new SelectionAdapter() {
527
			public void widgetSelected(SelectionEvent se) {
528
				Filter filter = new FilterDialog().showWindow();
529
				if (filter == null) {
530
					return;
531
				}
532
				
533
				IBrowserNode root = _topologyViewContentProvider.getRoot();
534
				
535
				// if this is a service group then we can apply this filter
536
				// 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
537
				
538
				System.out.println("root instanceof ManagedResourceNode = "+(root instanceof ManagedResourceNode));
539
				System.out.println(root.getClass());
540
				Object[] children = root.getChildren();
541
				
542
				// the first child is what we want
543
				IBrowserNode child = null;
544
				try{
545
					child = (IBrowserNode) children[0];
546
				}catch(ArrayIndexOutOfBoundsException ae){
547
					
548
				}
549
				if(child != null
550
						&& child instanceof ManagedResourceNode){
551
					((ManagedResourceNode)child).setFilter(filter);
552
					((ManagedResourceNode)child).refresh();
553
					if (!filterMatches) {
554
						MessageDialog
555
								.openInformation(
556
										_topologyViewer.getControl().getShell(),
557
										Messages
558
												.getString("MAExplorerView.FILTER.TITILE.UI."),
559
										Messages
560
												.getString("MAExplorerView.FILTER.MESSAGE.UI."));
561
						//_topologyViewer.setInput(null);
562
					}
563
				}
564
				
565
				// this filtering must not be done here - it should be done by the ManagedResourceNode in figuring  out which of its children to show
566
				/*
567
				Object[] children = root.getChildren();
568
				for (int i = 0; i < children.length; i++) {
569
					root.removeChild((IBrowserNode) children[i]);
570
				}
571
				FilterUtil.setFilter(filter);
572
				System.out.println("FILTER STRING: " + filter.toString());
573
				ManagedResource[] resources = FilterUtil.getManagedResources();
574
				if (resources == null || resources.length<0) {
575
					return;
576
				}
577
				_topologyViewContentProvider.setFilterMatch(false);
578
				
579
				boolean match = _topologyViewContentProvider.getFilterMatch();
580
				if (!match) {
581
					MessageDialog
582
							.openInformation(
583
									_topologyViewer.getControl().getShell(),
584
									Messages
585
											.getString("MAExplorerView.FILTER.TITILE.UI."),
586
									Messages
587
											.getString("MAExplorerView.FILTER.MESSAGE.UI."));
588
					_topologyViewer.setInput(null);
589
				}
590
				*/
591
			}
592
		});
593
	}
594
595
	private void addToolItemSelectionListener(ToolItem ti, final Menu ddMenu) {
596
		ti.addSelectionListener(new SelectionAdapter() {
597
			public void widgetSelected(SelectionEvent se) {
598
				ToolItem item = (ToolItem) se.widget;
599
				if (se.detail == SWT.ARROW) {
600
					// Determine where to put the dropdown list
601
					Rectangle rect = item.getBounds();
602
					Point pt = item.getParent().toDisplay(
603
							new Point(rect.x, rect.y));
604
					ddMenu.setLocation(pt.x, pt.y + rect.height);
605
					ddMenu.setVisible(true);
606
				} else {
607
					_sort = !_sort;
608
					if (_sort) {
609
						item.setImage(_imgUnSort);
610
						Tree tree = _topologyViewer.getTree();
611
						if (tree != null) {
612
							_topologyViewer.setComparator(_sorter);
613
						}
614
					} else {
615
						item.setImage(_imgSort);
616
						_topologyViewer.setComparator(null);
617
					}
618
				}
619
			}
620
		});
621
	}
622
504
623
	private void makeActions() {
505
	private void makeActions() {
624
		_refreshPropertiesAction = new Action() {
506
		_refreshPropertiesAction = new Action() {
Lines 669-680 Link Here
669
	
551
	
670
	public void disableFilterAndSorting()
552
	public void disableFilterAndSorting()
671
	{
553
	{
672
		_tiSort.setEnabled(false);
554
		if(_filterProvider != null)
555
			_filterProvider.enableFiltering(false);
673
	}
556
	}
674
	
557
	
675
	public void enableFilterAndSorting()
558
	public void enableFilterAndSorting()
676
	{
559
	{
677
		_tiSort.setEnabled(true);
560
		if(_filterProvider != null)
561
			_filterProvider.enableFiltering(true);
678
	}
562
	}
679
563
	
564
	public void setFilterProvider(IFilterProvider provider)
565
	{
566
		this._filterProvider = provider;
567
		addSortAndFilterToolBar(_topologySection);
568
		disableFilterAndSorting();
569
	}
570
	
571
	public IFilterProvider getFilterProvider()
572
	{
573
		return this._filterProvider;
574
	}
575
	
576
	public IContentProvider getContentProvider()
577
	{
578
		return _topologyViewContentProvider;
579
	}
580
	
581
	private void loadFilterExtensions()
582
	{
583
		_filterProviders = new Hashtable();
584
		IExtension[] exts = Platform.getExtensionRegistry().getExtensionPoint(ManagedAgentUIPlugin.PLUGIN_ID, FILTER_EXT_PT).getExtensions();
585
		if(exts == null || exts.length == 0)
586
			return;
587
		for (int i = 0; i < exts.length; ++i) {
588
			IConfigurationElement[] elements = exts[i].getConfigurationElements();
589
			for (int j = 0; j < elements.length; ++j) {
590
				if ("MAXFilter".equals(elements[j].getName())) { //$NON-NLS-1$
591
					try {
592
						IFilterProvider helper = (IFilterProvider) elements[j].createExecutableExtension("providerClass"); //$NON-NLS-1$
593
						helper.setMAXView(this);
594
						String type = elements[j].getAttribute("agentType"); //$NON-NLS-1$
595
						//System.out.println("PC = " + elements[j].getAttribute("providerClass"));
596
						_filterProviders.put(type, helper);
597
					} catch (Exception e) {
598
						e.printStackTrace();
599
					}
600
				}
601
			}
602
		}
603
	}
604
	
605
	public static IFilterProvider getFilterProviderForAgentType(String agentType)
606
	{
607
		return (IFilterProvider) _filterProviders.get(agentType);
608
	}
609
	
680
}
610
}
(-)plugin.xml (+17 lines)
Lines 4-9 Link Here
4
   <extension-point id="selectionListener" name="Selection Listener" schema="schema/selectionListener.exsd"/>
4
   <extension-point id="selectionListener" name="Selection Listener" schema="schema/selectionListener.exsd"/>
5
      <extension-point id="actionProvider" name="Context menu action provider" schema="schema/actionProvider.exsd"/>
5
      <extension-point id="actionProvider" name="Context menu action provider" schema="schema/actionProvider.exsd"/>
6
      <extension-point id="connectionHelper" name="connectionHelper" schema="schema/connectionHelper.exsd"/>
6
      <extension-point id="connectionHelper" name="connectionHelper" schema="schema/connectionHelper.exsd"/>
7
      <extension-point id="maxFilter" name="maxFilter" schema="schema/maxFilter.exsd"/>
7
	<!-- sbalan
8
	<!-- sbalan
8
   <extension-point id="changeBroker" name="ChangeBroker" schema="schema/changeBroker.exsd"/>
9
   <extension-point id="changeBroker" name="ChangeBroker" schema="schema/changeBroker.exsd"/>
9
   -->
10
   -->
Lines 99-104 Link Here
99
         point="org.eclipse.ui.startup">
100
         point="org.eclipse.ui.startup">
100
      <startup class="org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin"/>
101
      <startup class="org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin"/>
101
   </extension>
102
   </extension>
103
    <extension
104
          point="org.eclipse.tptp.monitoring.managedagent.ui.maxFilter"
105
          name="MAXFilter">
106
       <MAXFilter
107
             agentType="WSDM"
108
             providerClass="org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.WSDMAgentFilterProvider">
109
       </MAXFilter>
110
    </extension>
111
    <extension
112
          point="org.eclipse.tptp.monitoring.managedagent.ui.maxFilter"
113
          name="MAXFilter">
114
       <MAXFilter
115
             agentType="JMX"
116
             providerClass="org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.JMXAgentFilterProvider">
117
       </MAXFilter>
118
    </extension>
102
    <!-- sbalan
119
    <!-- sbalan
103
    <extension
120
    <extension
104
          point="org.eclipse.tptp.monitoring.managedagent.ui.changeBroker">
121
          point="org.eclipse.tptp.monitoring.managedagent.ui.changeBroker">
(-)schema/maxFilter.exsd (+112 lines)
Added Link Here
1
<?xml version='1.0' encoding='UTF-8'?>
2
<!-- Schema file written by PDE -->
3
<schema targetNamespace="org.eclipse.tptp.monitoring.managedagent.ui">
4
<annotation>
5
      <appInfo>
6
         <meta.schema plugin="org.eclipse.tptp.monitoring.managedagent.ui" id="maxFilter" name="maxFilter"/>
7
      </appInfo>
8
      <documentation>
9
         [Enter description of this extension point.]
10
      </documentation>
11
   </annotation>
12
13
   <element name="extension">
14
      <complexType>
15
         <sequence>
16
            <element ref="MAXFilter"/>
17
         </sequence>
18
         <attribute name="point" type="string" use="required">
19
            <annotation>
20
               <documentation>
21
                  
22
               </documentation>
23
            </annotation>
24
         </attribute>
25
         <attribute name="id" type="string">
26
            <annotation>
27
               <documentation>
28
                  
29
               </documentation>
30
            </annotation>
31
         </attribute>
32
         <attribute name="name" type="string">
33
            <annotation>
34
               <documentation>
35
                  
36
               </documentation>
37
               <appInfo>
38
                  <meta.attribute translatable="true"/>
39
               </appInfo>
40
            </annotation>
41
         </attribute>
42
      </complexType>
43
   </element>
44
45
   <element name="MAXFilter">
46
      <complexType>
47
         <attribute name="agentType" type="string" use="required">
48
            <annotation>
49
               <documentation>
50
                  This attribute specifies for which type of agent this filter is provided.
51
               </documentation>
52
            </annotation>
53
         </attribute>
54
         <attribute name="providerClass" type="string" use="required">
55
            <annotation>
56
               <documentation>
57
                  This class should implement IFilterProvider interface.
58
               </documentation>
59
               <appInfo>
60
                  <meta.attribute kind="java" basedOn="org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider"/>
61
               </appInfo>
62
            </annotation>
63
         </attribute>
64
      </complexType>
65
   </element>
66
67
   <annotation>
68
      <appInfo>
69
         <meta.section type="since"/>
70
      </appInfo>
71
      <documentation>
72
         [Enter the first release in which this extension point appears.]
73
      </documentation>
74
   </annotation>
75
76
   <annotation>
77
      <appInfo>
78
         <meta.section type="examples"/>
79
      </appInfo>
80
      <documentation>
81
         [Enter extension point usage example here.]
82
      </documentation>
83
   </annotation>
84
85
   <annotation>
86
      <appInfo>
87
         <meta.section type="apiInfo"/>
88
      </appInfo>
89
      <documentation>
90
         [Enter API information here.]
91
      </documentation>
92
   </annotation>
93
94
   <annotation>
95
      <appInfo>
96
         <meta.section type="implementation"/>
97
      </appInfo>
98
      <documentation>
99
         [Enter information about supplied implementation of this extension point.]
100
      </documentation>
101
   </annotation>
102
103
   <annotation>
104
      <appInfo>
105
         <meta.section type="copyright"/>
106
      </appInfo>
107
      <documentation>
108
         
109
      </documentation>
110
   </annotation>
111
112
</schema>
(-)src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/WSDMAgentFilterProvider.java (+244 lines)
Added Link Here
1
/**
2
 * 
3
 */
4
package org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter;
5
6
import org.eclipse.jface.dialogs.MessageDialog;
7
import org.eclipse.jface.viewers.TreeViewer;
8
import org.eclipse.jface.viewers.ViewerComparator;
9
import org.eclipse.swt.SWT;
10
import org.eclipse.swt.events.SelectionAdapter;
11
import org.eclipse.swt.events.SelectionEvent;
12
import org.eclipse.swt.graphics.Image;
13
import org.eclipse.swt.graphics.Point;
14
import org.eclipse.swt.graphics.Rectangle;
15
import org.eclipse.swt.layout.FillLayout;
16
import org.eclipse.swt.widgets.Composite;
17
import org.eclipse.swt.widgets.Control;
18
import org.eclipse.swt.widgets.Menu;
19
import org.eclipse.swt.widgets.MenuItem;
20
import org.eclipse.swt.widgets.ToolBar;
21
import org.eclipse.swt.widgets.ToolItem;
22
import org.eclipse.swt.widgets.Tree;
23
import org.eclipse.tptp.monitoring.managedagent.provisional.model.ManagedResource;
24
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Comparator;
25
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.Filter;
26
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.FilterDialog;
27
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.FilterUtil;
28
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.MAExplorerView;
29
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.Messages;
30
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.util.ImageUtil;
31
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.BrowserViewContentProvider;
32
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.IBrowserNode;
33
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.ManagedResourceNode;
34
import org.eclipse.ui.forms.widgets.FormToolkit;
35
36
public class WSDMAgentFilterProvider implements IFilterProvider 
37
{
38
	
39
	private boolean _sort = false;
40
41
	private Image _imgSort;
42
43
	private Image _imgFilter;
44
45
	private Image _imgUnSort;
46
47
	private MenuItem _miFilter;
48
	
49
	private ToolItem _tiSort;
50
	
51
	private FormToolkit _toolkit;
52
	
53
	private MAExplorerView _view;
54
	
55
	private TreeViewer _topologyViewer;
56
	
57
	private ViewerComparator _sorter;
58
	
59
	private BrowserViewContentProvider _topologyViewContentProvider;
60
	
61
	private Composite _sfComp;
62
	
63
	private Object _filter;
64
	
65
	public WSDMAgentFilterProvider() 
66
	{
67
		//findAndSetMAXView();
68
		_sorter = new Comparator();
69
	}
70
71
	/* (non-Javadoc)
72
	 * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#createFilterUI(org.eclipse.swt.widgets.Composite)
73
	 */
74
	public Composite createFilterUI(Composite parent) 
75
	{
76
		_toolkit = new FormToolkit(parent.getDisplay());
77
		_sfComp = _toolkit.createComposite(parent);
78
		_sfComp.setLayout(new FillLayout());
79
		ToolBar tb = new ToolBar(_sfComp, SWT.NONE);
80
		_tiSort = new ToolItem(tb, SWT.DROP_DOWN);
81
		_imgSort = ImageUtil.getImage(ImageUtil.SORT_IMAGE);
82
		_tiSort.setImage(_imgSort);
83
84
		_imgUnSort = ImageUtil.getImage(ImageUtil.UNSORT_IMAGE);
85
86
		Menu ddMenu = new Menu(_tiSort.getParent().getShell(), SWT.NONE);
87
		_miFilter = new MenuItem(ddMenu, SWT.NONE);
88
		_imgFilter = ImageUtil.getImage(ImageUtil.FILTER_IMAGE);
89
		_miFilter.setImage(_imgFilter);
90
		_miFilter.setText(Messages.getString("MAExplorerView.FILTER.UI."));
91
92
		addMenuItemSelectionListener();
93
		addToolItemSelectionListener(_tiSort, ddMenu);
94
		return _sfComp;
95
	}
96
97
	/* (non-Javadoc)
98
	 * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#getFilter()
99
	 */
100
	public Object getFilter() 
101
	{
102
		return this._filter;
103
	}
104
105
	/* (non-Javadoc)
106
	 * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#matchFilter(java.lang.Object)
107
	 */
108
	public boolean matchFilter(Object resource) 
109
	{
110
		return FilterUtil.matchFilter((ManagedResource) resource);
111
	}
112
113
	/* (non-Javadoc)
114
	 * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#setFilter(java.lang.Object)
115
	 */
116
	public void setFilter(Object filter) 
117
	{
118
		if(filter instanceof Filter)
119
			FilterUtil.setFilter((Filter)filter);
120
		this._filter = filter;
121
	}
122
	
123
	private void addMenuItemSelectionListener() {
124
		_miFilter.addSelectionListener(new SelectionAdapter() {
125
			public void widgetSelected(SelectionEvent se) {
126
				Filter filter = new FilterDialog().showWindow();
127
				if (filter == null) {
128
					return;
129
				}
130
				
131
				IBrowserNode root = _topologyViewContentProvider.getRoot();
132
				
133
				// if this is a service group then we can apply this filter
134
				// 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
135
				
136
				System.out.println("root instanceof ManagedResourceNode = "+(root instanceof ManagedResourceNode));
137
				System.out.println(root.getClass());
138
				Object[] children = root.getChildren();
139
				
140
				// the first child is what we want
141
				IBrowserNode child = null;
142
				try{
143
					child = (IBrowserNode) children[0];
144
				}catch(ArrayIndexOutOfBoundsException ae){
145
					
146
				}
147
				if(child != null
148
						&& child instanceof ManagedResourceNode){
149
					((ManagedResourceNode)child).setFilter(filter);
150
					((ManagedResourceNode)child).refresh();
151
					if (!MAExplorerView.filterMatches) {
152
						MessageDialog
153
								.openInformation(
154
										_topologyViewer.getControl().getShell(),
155
										Messages
156
												.getString("MAExplorerView.FILTER.TITILE.UI."),
157
										Messages
158
												.getString("MAExplorerView.FILTER.MESSAGE.UI."));
159
						//_topologyViewer.setInput(null);
160
					}
161
				}
162
				
163
				// this filtering must not be done here - it should be done by the ManagedResourceNode in figuring  out which of its children to show
164
				/*
165
				Object[] children = root.getChildren();
166
				for (int i = 0; i < children.length; i++) {
167
					root.removeChild((IBrowserNode) children[i]);
168
				}
169
				FilterUtil.setFilter(filter);
170
				System.out.println("FILTER STRING: " + filter.toString());
171
				ManagedResource[] resources = FilterUtil.getManagedResources();
172
				if (resources == null || resources.length<0) {
173
					return;
174
				}
175
				_topologyViewContentProvider.setFilterMatch(false);
176
				
177
				boolean match = _topologyViewContentProvider.getFilterMatch();
178
				if (!match) {
179
					MessageDialog
180
							.openInformation(
181
									_topologyViewer.getControl().getShell(),
182
									Messages
183
											.getString("MAExplorerView.FILTER.TITILE.UI."),
184
									Messages
185
											.getString("MAExplorerView.FILTER.MESSAGE.UI."));
186
					_topologyViewer.setInput(null);
187
				}
188
				*/
189
			}
190
		});
191
	}
192
193
	private void addToolItemSelectionListener(ToolItem ti, final Menu ddMenu) {
194
		ti.addSelectionListener(new SelectionAdapter() {
195
			public void widgetSelected(SelectionEvent se) {
196
				ToolItem item = (ToolItem) se.widget;
197
				if (se.detail == SWT.ARROW) {
198
					// Determine where to put the dropdown list
199
					Rectangle rect = item.getBounds();
200
					Point pt = item.getParent().toDisplay(
201
							new Point(rect.x, rect.y));
202
					ddMenu.setLocation(pt.x, pt.y + rect.height);
203
					ddMenu.setVisible(true);
204
				} else {
205
					_sort = !_sort;
206
					if (_sort) {
207
						item.setImage(_imgUnSort);
208
						Tree tree = _topologyViewer.getTree();
209
						if (tree != null) {
210
							_topologyViewer.setComparator(_sorter);
211
						}
212
					} else {
213
						item.setImage(_imgSort);
214
						_topologyViewer.setComparator(null);
215
					}
216
				}
217
			}
218
		});
219
	}
220
	
221
	public void setMAXView(MAExplorerView maxView)
222
	{
223
		if(maxView != null)
224
		{
225
			_view = maxView;
226
			_topologyViewer = _view.getTopologyViewer();
227
			_topologyViewContentProvider = (BrowserViewContentProvider) _view.getContentProvider();
228
			//_view.setFilterProvider(this);
229
		}
230
	}
231
232
	public void enableFiltering(boolean enable) 
233
	{
234
		_sfComp.setEnabled(enable);
235
		Control controls[] = _sfComp.getChildren();
236
		if(controls == null || controls.length == 0)
237
			return;
238
		for(int i = 0; i < controls.length; i++)
239
		{
240
			controls[i].setEnabled(enable);
241
		}
242
	}
243
244
}
(-)src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/JMXAgentFilterProvider.java (+60 lines)
Added Link Here
1
/**
2
 * 
3
 */
4
package org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter;
5
6
import org.eclipse.swt.widgets.Composite;
7
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.MAExplorerView;
8
9
/**
10
 * @author administrator
11
 *
12
 */
13
public class JMXAgentFilterProvider implements IFilterProvider {
14
15
	/* (non-Javadoc)
16
	 * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#createFilterUI(org.eclipse.swt.widgets.Composite)
17
	 */
18
	public Composite createFilterUI(Composite parent) {
19
		// TODO Auto-generated method stub
20
		return null;
21
	}
22
23
	/* (non-Javadoc)
24
	 * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#enableFiltering(boolean)
25
	 */
26
	public void enableFiltering(boolean enable) {
27
		// TODO Auto-generated method stub
28
29
	}
30
31
	/* (non-Javadoc)
32
	 * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#getFilter()
33
	 */
34
	public Object getFilter() {
35
		// TODO Auto-generated method stub
36
		return null;
37
	}
38
39
	/* (non-Javadoc)
40
	 * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#matchFilter(java.lang.Object)
41
	 */
42
	public boolean matchFilter(Object resource) {
43
		// TODO Auto-generated method stub
44
		return false;
45
	}
46
47
	/* (non-Javadoc)
48
	 * @see org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter.IFilterProvider#setFilter(java.lang.Object)
49
	 */
50
	public void setFilter(Object filter) {
51
		// TODO Auto-generated method stub
52
53
	}
54
55
	public void setMAXView(MAExplorerView view) {
56
		// TODO Auto-generated method stub
57
		
58
	}
59
60
}
(-)src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/filter/IFilterProvider.java (+59 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2007 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 * 
8
 * Contributors:
9
 * 	Balan Subramanian (bsubram@us.ibm.com)
10
 *     IBM Corporation - initial API and implementation
11
 *******************************************************************************/
12
package org.eclipse.tptp.monitoring.managedagent.ui.explorer.filter;
13
14
import org.eclipse.swt.widgets.Composite;
15
import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ui.MAExplorerView;
16
17
18
public interface IFilterProvider 
19
{
20
	/**
21
	 * This method is used to set the filter for the FilterProvider class. The parameter has to be cast to the correspoding filter class<br/>
22
	 * and used.
23
	 * @param filter - Filter Object.
24
	 */
25
	public void setFilter(Object filter);
26
	
27
	/**
28
	 * This methods returns an Object reperenting the filter that is being set. To be cast to the required class before use.
29
	 * @return Filter object
30
	 */
31
	public Object getFilter();
32
	
33
	/**
34
	 * Checks for the match criteria of the filter that is set using setFilter() method for the given resource object.<br/>
35
	 * 
36
	 * @param resource
37
	 * @return true if the resource matches the filter. false otherwise.
38
	 */
39
	public boolean matchFilter(Object resource);
40
	
41
	/**
42
	 * Called for creating the UI for this filter provider.
43
	 * @param parent - parent Composite
44
	 * @return A Composite containing the UI of this filter provider
45
	 */
46
	public Composite createFilterUI(Composite parent);
47
	
48
	/**
49
	 *enables or disables filtering based on the parameter 
50
	 * @param enable
51
	 */
52
	public void enableFiltering(boolean enable);
53
	
54
	/**
55
	 * 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. 
56
	 * @param view
57
	 */
58
	public void setMAXView(MAExplorerView view);
59
}

Return to bug 165565