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 60132 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]
does filtering and sorting and in addition corrects how service groups are discovered. Also enhances refresh button to work for managed resources as well based on what is selected.
patch_165565_max_filter_and_service_gp_fix.txt (text/plain), 94.98 KB, created by
Balan Subramanian
on 2007-03-02 02:56:16 EST
(
hide
)
Description:
does filtering and sorting and in addition corrects how service groups are discovered. Also enhances refresh button to work for managed resources as well based on what is selected.
Filename:
MIME Type:
Creator:
Balan Subramanian
Created:
2007-03-02 02:56:16 EST
Size:
94.98 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.tptp.monitoring.managedagent >Index: src/org/eclipse/tptp/monitoring/managedagent/provisional/helper/ManagedAgentCommandHelper.java >=================================================================== >RCS file: /cvsroot/ganges/org.eclipse.tptp.monitoring.managedagent/src/org/eclipse/tptp/monitoring/managedagent/provisional/helper/ManagedAgentCommandHelper.java,v >retrieving revision 1.1 >diff -u -r1.1 ManagedAgentCommandHelper.java >--- src/org/eclipse/tptp/monitoring/managedagent/provisional/helper/ManagedAgentCommandHelper.java 8 Feb 2007 19:41:19 -0000 1.1 >+++ src/org/eclipse/tptp/monitoring/managedagent/provisional/helper/ManagedAgentCommandHelper.java 2 Mar 2007 07:40:47 -0000 >@@ -188,19 +188,22 @@ > _request = new CommandWrapper(); > _request.setOperationName(Constants.GET_MEMBERS_COMMAND); > _request.addParameter(""); //$NON-NLS-1$ >+ Object[] memberRet = null; > try{ >- Object[] memberRet = execute(_request); >- if(memberRet!=null && memberRet.length>0){ >- membersData = (Hashtable) memberRet[0]; >- if(membersData!=null && membersData.size()!=0) >- isServiceGroup = true; >- } >+ memberRet = execute(_request); >+ // its a service group even if it doesn't have members right now >+ // its a service group if this request goes through (.i.e. the operation exists) >+ isServiceGroup = true; >+ > }catch(Exception ex){ >- // this means resources is not a service group >+ // this means resource is not a service group > System.out.println("This is not a service group."); //$NON-NLS-1$ > isServiceGroup = false; > } > >+ if(isServiceGroup && memberRet!=null && memberRet.length>0){ >+ membersData = (Hashtable) memberRet[0]; >+ } > > }catch(ClassCastException ce){ > ManagedAgentPlugin.getDefault().log(Messages.getString("ManagedAgentCommandHelper.MEX_FAILED.ERROR."), ce, IStatus.ERROR); //$NON-NLS-1$ >@@ -216,7 +219,9 @@ > // not doing getMembers coz we already have it > if(isServiceGroup){ > doServiceGroupModelPopulation(membersData); >- return; >+ >+ // do not return still need to collect as much metadata as possible >+ // return; > } > > getRelationships(); >#P org.eclipse.tptp.monitoring.managedagent.ui >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/messages.properties >=================================================================== >RCS file: /cvsroot/ganges/org.eclipse.tptp.monitoring.managedagent.ui/src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/messages.properties,v >retrieving revision 1.1 >diff -u -r1.1 messages.properties >--- src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/messages.properties 8 Feb 2007 19:41:51 -0000 1.1 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/messages.properties 2 Mar 2007 07:40:49 -0000 >@@ -25,3 +25,9 @@ > MAExplorerView.VALUE.UI.=Value > MAExplorerView.RESOURCE_TOPOLOGY.UI.=Resource Topology > MAExplorerView.REFRESH_PROPS.UI.=Refresh Properties >+MAExplorerView.FILTER.UI.=Filter >+ >+ >+#Props to indicate there are no resource matching the filter >+MAExplorerView.FILTER.TITILE.UI.=Filter >+MAExplorerView.FILTER.MESSAGE.UI.=No resource match the specified filter. >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.2 >diff -u -r1.2 MAExplorerView.java >--- src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/MAExplorerView.java 28 Feb 2007 19:21:29 -0000 1.2 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/ui/MAExplorerView.java 2 Mar 2007 07:40:49 -0000 >@@ -28,6 +28,7 @@ > 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; >@@ -35,25 +36,37 @@ > 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.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; >@@ -102,11 +115,24 @@ > > private static MAExplorerView _default = null; > >+ private ViewerComparator _sorter; >+ >+ private boolean _sort = false; >+ >+ private Image _imgSort; >+ >+ private Image _imgFilter; >+ >+ private Image _imgUnSort; >+ >+ private MenuItem _miFilter; >+ > /** > * The constructor. > */ > public MAExplorerView() { > _default = this; >+ new MaxFilterPreference(); > } > > public static MAExplorerView getDefault() { >@@ -116,10 +142,10 @@ > return _default; > } > >- public TreeViewer getTopologyViewer(){ >+ public TreeViewer getTopologyViewer() { > return _topologyViewer; > } >- >+ > /** > * This is a callback that will allow us to create the viewer and initialize > * it. >@@ -155,82 +181,92 @@ > > private void layoutDetailsPanel(Composite parent) { > createLabel(parent); >- >+ > //createTabFolder(parent); > > createDetailsTextTab(parent); > } > > private void createDetailsTextTab(Composite parent) { >- _detailsText = _toolkit.createText(parent, new String(), SWT.BORDER|SWT.H_SCROLL|SWT.V_SCROLL); >+ _detailsText = _toolkit.createText(parent, new String(), SWT.BORDER >+ | SWT.H_SCROLL | SWT.V_SCROLL); > >- _propertiesViewer.addSelectionChangedListener(new ISelectionChangedListener() { >- public void selectionChanged(SelectionChangedEvent event) { >- TableItem[] tableSelection = _propertiesViewer.getTable().getSelection(); >+ _propertiesViewer >+ .addSelectionChangedListener(new ISelectionChangedListener() { >+ public void selectionChanged(SelectionChangedEvent event) { >+ TableItem[] tableSelection = _propertiesViewer >+ .getTable().getSelection(); >+ >+ if (tableSelection.length > 0) { >+ if (_detailsObject != tableSelection[0]) { >+ checkDetailsAndSave(); >+ } >+ _detailsObject = tableSelection[0]; >+ >+ PropertiesViewLabelProvider labelProvier = (PropertiesViewLabelProvider) _propertiesViewer >+ .getLabelProvider(); >+ String text = labelProvier.getColumnText( >+ _detailsObject.getData(), 1); >+ if (text == null) { >+ text = new String(); >+ } >+ >+ _detailsText.removeModifyListener(_modifyListener); >+ _detailsText.setText(text); >+ _detailsText.setEnabled(true); >+ _detailsText.addModifyListener(_modifyListener); >+ } else { >+ checkDetailsAndSave(); >+ _detailsObject = null; >+ } >+ _applyButton.setEnabled(false); >+ } >+ }); > >- if(tableSelection.length > 0) { >- if(_detailsObject != tableSelection[0]) { >+ _topologyViewer >+ .addSelectionChangedListener(new ISelectionChangedListener() { >+ public void selectionChanged(SelectionChangedEvent event) { > checkDetailsAndSave(); > } >- _detailsObject = tableSelection[0]; >- >- PropertiesViewLabelProvider labelProvier = (PropertiesViewLabelProvider) _propertiesViewer.getLabelProvider(); >- String text = labelProvier.getColumnText(_detailsObject.getData(), 1); >- if(text == null) { >- text = new String(); >- } >- >- _detailsText.removeModifyListener(_modifyListener); >- _detailsText.setText(text); >- _detailsText.setEnabled(true); >- _detailsText.addModifyListener(_modifyListener); >- } else { >- checkDetailsAndSave(); >- _detailsObject = null; >- } >- _applyButton.setEnabled(false); >- } >- }); >- >- _topologyViewer.addSelectionChangedListener(new ISelectionChangedListener() { >- public void selectionChanged(SelectionChangedEvent event) { >- checkDetailsAndSave(); >- } >- }); >- >+ }); >+ > GridData gd = new GridData(); > gd.grabExcessHorizontalSpace = true; > gd.grabExcessVerticalSpace = true; > gd.horizontalAlignment = SWT.FILL; > gd.verticalAlignment = SWT.FILL; > _detailsText.setLayoutData(gd); >- >+ > createApplyButton(parent); > } > > private void checkDetailsAndSave() { >- if(_applyButton.isEnabled()) { >- if(MessageDialog.openConfirm(_detailsText.getShell(), Messages.getString("MAExplorerView.DISCARD.UI."), Messages.getString("MAExplorerView.SAVE_QUESTION.UI."))) { //$NON-NLS-1$ //$NON-NLS-2$ >+ if (_applyButton.isEnabled()) { >+ if (MessageDialog >+ .openConfirm( >+ _detailsText.getShell(), >+ Messages.getString("MAExplorerView.DISCARD.UI."), Messages.getString("MAExplorerView.SAVE_QUESTION.UI."))) { //$NON-NLS-1$ //$NON-NLS-2$ > _propertiesViewer.getCellModifier().modify(_detailsObject, > PropertiesCellModifier.VALUE_PROPERTY, >- _detailsText.getText()); >- } >+ _detailsText.getText()); >+ } > } > _detailsText.setEnabled(false); > _detailsText.removeModifyListener(_modifyListener); > _detailsText.setText(new String()); > _applyButton.setEnabled(false); >- } >- >+ } >+ > private void createApplyButton(Composite parent) { >- _applyButton = _toolkit.createButton(parent, Messages.getString("MAExplorerView.APPLY.UI."), SWT.NONE); //$NON-NLS-1$ >+ _applyButton = _toolkit.createButton(parent, Messages >+ .getString("MAExplorerView.APPLY.UI."), SWT.NONE); //$NON-NLS-1$ > > _modifyListener = new ModifyListener() { > public void modifyText(ModifyEvent e) { >- _applyButton.setEnabled(true); >- } >- }; >- >+ _applyButton.setEnabled(true); >+ } >+ }; >+ > _applyButton.addSelectionListener(new SelectionAdapter() { > public void widgetSelected(SelectionEvent e) { > saveDetailsData(); >@@ -245,20 +281,19 @@ > _applyButton.setLayoutData(gd); > _applyButton.setEnabled(false); > } >- >+ > private void saveDetailsData() { > _propertiesViewer.getCellModifier().modify(_detailsObject, >- PropertiesCellModifier.VALUE_PROPERTY, >- _detailsText.getText()); >- _applyButton.setEnabled(false); >+ PropertiesCellModifier.VALUE_PROPERTY, _detailsText.getText()); >+ _applyButton.setEnabled(false); > } > > private void createTabFolder(Composite parent) { >- CTabFolder folder = new CTabFolder(parent, SWT.FLAT|SWT.TOP); >+ CTabFolder folder = new CTabFolder(parent, SWT.FLAT | SWT.TOP); > _toolkit.adapt(folder, true, true); >- >+ > createTabs(folder); >- >+ > GridData gd = new GridData(GridData.FILL_HORIZONTAL); > gd.heightHint = 0; > folder.setLayoutData(gd); >@@ -267,7 +302,7 @@ > private void createLabel(Composite parent) { > Section label = _toolkit.createSection(parent, Section.TITLE_BAR); > label.setText(Messages.getString("MAExplorerView.VALUE_EDITOR.UI.")); //$NON-NLS-1$ >- >+ > GridData gd = new GridData(); > gd.grabExcessHorizontalSpace = true; > gd.grabExcessVerticalSpace = false; >@@ -276,7 +311,7 @@ > } > > private void createTabs(CTabFolder folder) { >- CTabItem item = new CTabItem(folder, SWT.NULL); >+ CTabItem item = new CTabItem(folder, SWT.NULL); > item.setText(Messages.getString("MAExplorerView.SOURCE.UI.")); //$NON-NLS-1$ > item = new CTabItem(folder, SWT.NULL); > item.setText(Messages.getString("MAExplorerView.DESIGN.UI.")); //$NON-NLS-1$ >@@ -301,7 +336,8 @@ > table.setData(FormToolkit.KEY_DRAW_BORDER, FormToolkit.TREE_BORDER); > > TableColumn propertyColumn = new TableColumn(table, SWT.LEFT); >- propertyColumn.setText(Messages.getString("MAExplorerView.PROPERTY.UI.")); //$NON-NLS-1$ >+ propertyColumn.setText(Messages >+ .getString("MAExplorerView.PROPERTY.UI.")); //$NON-NLS-1$ > propertyColumn.setWidth(140); > TableColumn valueColumn = new TableColumn(table, SWT.LEFT); > valueColumn.setText(Messages.getString("MAExplorerView.VALUE.UI.")); //$NON-NLS-1$ >@@ -318,19 +354,23 @@ > gd.horizontalAlignment = SWT.FILL; > gd.verticalAlignment = SWT.FILL; > table.setLayoutData(gd); >- >+ > createPropertiesEditors(); > } > > private void createPropertiesEditors() { > CellEditor[] editors = new CellEditor[2]; > editors[0] = new TextCellEditor(_propertiesViewer.getTable()); >- editors[1] = new TextCellEditor(_propertiesViewer.getTable(), SWT.READ_ONLY); >+ editors[1] = new TextCellEditor(_propertiesViewer.getTable(), >+ SWT.READ_ONLY); > _propertiesViewer.setCellEditors(editors); >- _propertiesViewer.setCellModifier(new PropertiesCellModifier(_propertiesViewer)); >- _propertiesViewer.setColumnProperties(new String[] {Messages.getString("MAExplorerView.PROPERTY.UI."),Messages.getString("MAExplorerView.VALUE.UI.")}); //$NON-NLS-1$ //$NON-NLS-2$ >+ _propertiesViewer.setCellModifier(new PropertiesCellModifier( >+ _propertiesViewer)); >+ _propertiesViewer >+ .setColumnProperties(new String[] { >+ Messages.getString("MAExplorerView.PROPERTY.UI."), Messages.getString("MAExplorerView.VALUE.UI.") }); //$NON-NLS-1$ //$NON-NLS-2$ > } >- >+ > private void layoutAgentTopologyTree() { > > Composite parent = _toolkit.createComposite(_form.getBody()); >@@ -340,16 +380,20 @@ > layout.marginHeight = DEFAULT_PADDING; > layout.marginWidth = DEFAULT_PADDING; > layout.numColumns = 1; >- >+ > parent.setLayout(layout); > > Section label = _toolkit.createSection(parent, Section.TITLE_BAR); >- label.setText(Messages.getString("MAExplorerView.RESOURCE_TOPOLOGY.UI.")); //$NON-NLS-1$ >+ label.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); >+ >+ _sorter = new Comparator(); >+ addSortAndFilterToolBar(label); > > _topologyViewer = new TreeViewer(parent); > >@@ -383,11 +427,12 @@ > getSite().setSelectionProvider(_topologyViewer); > > } >- >- private void hookupSelectionListeners(){ >- ISelectionChangedListener[] listeners = ManagedAgentUIPlugin.getSelectionListeners(); >- if(listeners!=null){ >- for(int i=0; i<listeners.length; i++){ >+ >+ private void hookupSelectionListeners() { >+ ISelectionChangedListener[] listeners = ManagedAgentUIPlugin >+ .getSelectionListeners(); >+ if (listeners != null) { >+ for (int i = 0; i < listeners.length; i++) { > _topologyViewer.addSelectionChangedListener(listeners[i]); > } > } >@@ -435,7 +480,7 @@ > manager.add(new Separator()); > > // Other plug-ins can contribute their actions here >- manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); >+ manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS)); > } > > private void contributeToActionBars() { >@@ -449,16 +494,132 @@ > _drillDownAdapter.addNavigationActions(manager); > } > >+ private void addSortAndFilterToolBar(Section label) { >+ Composite sfComp = _toolkit.createComposite(label); >+ sfComp.setLayout(new FillLayout()); >+ ToolBar tb = new ToolBar(sfComp, SWT.NONE); >+ ToolItem ti = new ToolItem(tb, SWT.DROP_DOWN); >+ _imgSort = ImageUtil.getImage(ImageUtil.SORT_IMAGE); >+ ti.setImage(_imgSort); >+ >+ _imgUnSort = ImageUtil.getImage(ImageUtil.UNSORT_IMAGE); >+ >+ Menu ddMenu = new Menu(ti.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(ti, ddMenu); >+ >+ _toolkit.adapt(sfComp); >+ label.setTextClient(sfComp); >+ } >+ >+ 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); >+ } >+ >+ // 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() { > public void run() { >- getViewerSelection().refresh(); >- _propertiesViewer.refresh(); >+ if(getViewerSelection()!=null){ >+ getViewerSelection().refresh(); >+ _propertiesViewer.refresh(); >+ }else{ >+ // TODO figure out if we can refresh something else >+ } > } > }; > >- _refreshPropertiesAction.setText(Messages.getString("MAExplorerView.REFRESH_PROPS.UI.")); //$NON-NLS-1$ >- _refreshPropertiesAction.setToolTipText(Messages.getString("MAExplorerView.REFRESH_PROPS.UI.")); //$NON-NLS-1$ >+ _refreshPropertiesAction.setText(Messages >+ .getString("MAExplorerView.REFRESH_PROPS.UI.")); //$NON-NLS-1$ >+ _refreshPropertiesAction.setToolTipText(Messages >+ .getString("MAExplorerView.REFRESH_PROPS.UI.")); //$NON-NLS-1$ > _refreshPropertiesAction.setImageDescriptor(ImageUtil > .getDescriptor(ImageUtil.REFRESH_PROPERTIES)); > } >@@ -489,5 +650,5 @@ > _toolkit.dispose(); > super.dispose(); > } >- >+ > } >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.1 >diff -u -r1.1 ManagedResourceNode.java >--- src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/ManagedResourceNode.java 8 Feb 2007 19:41:51 -0000 1.1 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/ManagedResourceNode.java 2 Mar 2007 07:40:49 -0000 >@@ -23,6 +23,7 @@ > import org.eclipse.jface.viewers.IDecoration; > import org.eclipse.swt.graphics.Image; > 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.Operation; > import org.eclipse.tptp.monitoring.managedagent.provisional.model.Property; >@@ -31,7 +32,10 @@ > import org.eclipse.tptp.monitoring.managedagent.provisional.model.util.ModelUtils; > 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; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.FilterUtil; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.util.ImageUtil; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.util.TextUtils; > import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.ModelActionProvider; > import org.eclipse.tptp.monitoring.managedagent.ui.launch.provisional.common.IConnectionHelper; > import org.eclipse.ui.ISharedImages; >@@ -58,6 +62,14 @@ > > private static final String RELATIONSHIPS_NODE = Messages.getString("ManagedResourceNode.RELATIONSHIPS.UI."); //$NON-NLS-1$ > >+ private static final String WSRF_SERVICE_GROUP_URI = "http://docs.oasis-open.org/wsrf/sg-2"; //$NON-NLS-1$ >+ >+ private static final String SERVICE_GROUP_OP_NAME_TO_CHECK = "isMatch"; >+ >+ private static final String SERVICE_GROUP_OP_PARAM_TO_CHECK = ""; >+ >+ private static final String SERVICE_GROUP_PROP_NAME_TO_CHECK = "MembershipContentRule"; >+ > ManagedResource _resource; > > private BrowserViewContentProvider _provider; >@@ -69,6 +81,10 @@ > private Map _connProps = null; > > private String _agentId = null; >+ >+ private Filter _filter = null; >+ >+ private ManagedAgentCommandHelper _agent = null; > > public ManagedResourceNode(BrowserViewContentProvider provider, > IBrowserNode parent, ManagedResource resource) { >@@ -77,6 +93,7 @@ > _resource = resource; > _nodeObject = resource; > _agentId = _resource.getId(); >+ _agent = ManagedAgentCommandHelper.getInstance(_agentId); > _connProps = new Hashtable(); > checkNodeType(); > >@@ -84,6 +101,10 @@ > > notifyProvider(); > } >+ >+ public void setFilter(Filter filter){ >+ _filter = filter; >+ } > > public String getId() { > return _agentId; >@@ -111,8 +132,49 @@ > > public String getName() { > return _resource.getName(); >+ //return "ResName"; >+ } >+ >+ public void refresh(){ >+ _children = new ArrayList(); >+ try { >+ _agent.getMembers(); >+ } catch (Exception e) { >+ ManagedAgentUIPlugin >+ .getDefault() >+ .log( >+ Messages >+ .getString("Cannot update managed resource"), e, IStatus.ERROR); //$NON-NLS-1$ >+ } >+ if(_isServiceGroup){ >+ performStructuralChanges(); >+ } >+ super.refresh(); > } > >+ protected void performStructuralChanges(){ >+ // TODO should we synchronize on FilterUtil or an instance of it >+ List members = _resource.getMembers(); >+ if( _filter != null ){ >+ FilterUtil.setFilter(_filter); >+ System.out.println("FILTER STRING: " + _filter.toString()); >+ } >+ >+ if (members != null && members.size() != 0) { >+ Iterator i = _resource.getMembers().iterator(); >+ while (i.hasNext()) { >+ ManagedResource member = (ManagedResource) i.next(); >+ >+ // if this child member meets the filter criteria then add it to the view else don't >+ if( _filter != null && ! FilterUtil.matchFilter(member) ) >+ continue; >+ >+ ManagedResourceNode memberNode = new ManagedResourceNode(_provider, this, member); >+ addChild(memberNode); >+ } >+ } >+ } >+ > private void loadMetadata() { > try{ > String type = ModelUtils.extractFromConnProperties(_resource.getConnectionProperties(), >@@ -133,16 +195,7 @@ > > if (_isServiceGroup) { > this._image = ImageUtil.getImage(ImageUtil.SG_NODE); >- List members = _resource.getMembers(); >- if (members != null && members.size() != 0) { >- Iterator i = _resource.getMembers().iterator(); >- while (i.hasNext()) { >- ManagedResource member = (ManagedResource) i.next(); >- ManagedResourceNode memberNode = new ManagedResourceNode( >- _provider, this, member); >- addChild(memberNode); >- } >- } >+ performStructuralChanges(); > } else { > Iterator i = _resource.getProperties().iterator(); > >@@ -322,7 +375,51 @@ > } > > private void checkServiceGroup() { >- _isServiceGroup = !_resource.getMembers().isEmpty(); >+ // TODO we already do this in the agent - do we have to do it again here??? >+ >+ // check if there is an isMatch operation whose parameter is in the sg namespace (http://docs.oasis-open.org/wsrf/sg-2) >+ /* >+ Operation[] ops = (Operation[]) _resource.getOperations().toArray(new Operation[]{}); >+ _isServiceGroup = false; >+ for(int i=0; i<ops.length; i++){ >+ OperationParameter[] params = (OperationParameter[]) ops[i].getArgument(). >+ toArray(new OperationParameter[]{}); >+ >+ String opName = params[i].getName(); >+ >+ for(int j=0; j<params.length; j++){ >+ String paramName = params[j].getName(); >+ String qnameParts[] = TextUtils.deserializeFromString(paramName); >+ String namespaceURI = qnameParts[0]; >+ String localPart = qnameParts[1]; >+ if( opName.indexOf(SERVICE_GROUP_OP_NAME_TO_CHECK) > -1 >+ && namespaceURI.equals(SERVICE_GROUP_URI) >+ && localPart.equals(SERVICE_GROUP_OP_PARAM_TO_CHECK)){ >+ _isServiceGroup = true; >+ return; >+ } >+ } >+ }*/ >+ >+ // check if there is a specific property >+ Property[] props = (Property[]) _resource.getProperties().toArray(new Property[]{}); >+ _isServiceGroup = false; >+ for(int i=0; i<props.length; i++){ >+ String propNameStr = props[i].getName(); >+ String[] propQNameParts = TextUtils.deserializeFromString(propNameStr); >+ String nsURI = propQNameParts[0]; >+ String localPart = propQNameParts[1]; >+ if(nsURI.equals(WSRF_SERVICE_GROUP_URI) >+ && localPart.equals(SERVICE_GROUP_PROP_NAME_TO_CHECK)){ >+ _isServiceGroup=true; >+ break; >+ } >+ } >+ if(_isServiceGroup >+ && _resource.getMembers().isEmpty()){ >+ ManagedAgentUIPlugin.getDefault().log("Service group is currently empty", null, IStatus.INFO); >+ } >+ > if (_isServiceGroup) { > _image = PlatformUI.getWorkbench().getSharedImages().getImage( > ISharedImages.IMG_OBJ_FOLDER); >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.1 >diff -u -r1.1 BrowserViewContentProvider.java >--- src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/BrowserViewContentProvider.java 8 Feb 2007 19:41:51 -0000 1.1 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/provisional/controller/BrowserViewContentProvider.java 2 Mar 2007 07:40:49 -0000 >@@ -14,13 +14,16 @@ > import org.eclipse.emf.common.notify.Adapter; > import org.eclipse.emf.common.notify.Notification; > import org.eclipse.emf.common.notify.Notifier; >+import org.eclipse.jface.dialogs.MessageDialog; > 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.helper.ManagedAgentCommandHelper; >+import org.eclipse.tptp.monitoring.managedagent.provisional.model.ManagedResource; > 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; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.FilterUtil; > import org.eclipse.ui.IViewSite; > import org.eclipse.ui.PlatformUI; > >@@ -34,6 +37,8 @@ > private IViewSite _viewSite; > > private Viewer _viewer; >+ >+ private boolean _filterMatch = false; > > public BrowserViewContentProvider(IViewSite viewSite) { > _viewSite = viewSite; >@@ -93,17 +98,43 @@ > > mac.getManagedResource().eAdapters().add(this); > >- Object[] children = _root.getChildren(); >- for(int i=0; i<children.length; i++){ >- _root.removeChild((IBrowserNode) children[i]); >+ //Apply Filter Here. if this managed resource satisfies the filter, then add the node >+ /*if(FilterUtil.getFilter() != null) >+ { >+ ManagedResource mr = mac.getManagedResource(); >+ boolean match = FilterUtil.matchFilter(mr); >+ System.out.println("RESOURCE NAME = " + mr.getName()); >+ if(match) >+ { >+ _root.addChild(new ManagedResourceNode(this, _root, mac.getManagedResource())); >+ >+ ManagedAgentUIPlugin.getDefault().setCurrentManagedResource(mac.getManagedResource()); >+ PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { >+ public void run() { >+ fireContentChanged(null); >+ } >+ }); >+ _viewer.setInput(_root); >+ _filterMatch = true; >+ } > } >- _root.addChild(new ManagedResourceNode(this, _root, mac.getManagedResource())); >- ManagedAgentUIPlugin.getDefault().setCurrentManagedResource(mac.getManagedResource()); >- PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { >- public void run() { >- fireContentChanged(null); >+ else >+ {*/ >+ Object[] children = _root.getChildren(); >+ for(int i=0; i<children.length; i++){ >+ _root.removeChild((IBrowserNode) children[i]); > } >- }); >+ >+ _root.addChild(new ManagedResourceNode(this, _root, mac.getManagedResource())); >+ >+ ManagedAgentUIPlugin.getDefault().setCurrentManagedResource(mac.getManagedResource()); >+ PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { >+ public void run() { >+ fireContentChanged(null); >+ } >+ }); >+ _viewer.setInput(_root); >+ /*}*/ > } > > public void refresh() { >@@ -130,6 +161,20 @@ > > public void setTarget(Notifier newTarget) { > // TODO Auto-generated method stub >- >+ } >+ >+ public boolean getFilterMatch() >+ { >+ return this._filterMatch; >+ } >+ >+ public void setFilterMatch(boolean match) >+ { >+ this._filterMatch = match; >+ } >+ >+ public IBrowserNode getRoot() >+ { >+ return _root; > } > } >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/util/ImageUtil.java >=================================================================== >RCS file: /cvsroot/ganges/org.eclipse.tptp.monitoring.managedagent.ui/src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/util/ImageUtil.java,v >retrieving revision 1.1 >diff -u -r1.1 ImageUtil.java >--- src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/util/ImageUtil.java 8 Feb 2007 19:41:52 -0000 1.1 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/util/ImageUtil.java 2 Mar 2007 07:40:49 -0000 >@@ -69,6 +69,11 @@ > > public static final String RELATED_RESOURCE_NODE = BASE_DIR + OBJ_DIR + "relatedResource_obj.gif"; //$NON-NLS-1$ > >+ public static final String SORT_IMAGE = BASE_DIR + OBJ_DIR + "sort.gif"; >+ >+ public static final String UNSORT_IMAGE = BASE_DIR + OBJ_DIR + "unsort.gif"; >+ >+ public static final String FILTER_IMAGE = BASE_DIR + OBJ_DIR + "filter.gif"; > > public static ImageDescriptor getDescriptor(String key) { > return ManagedAgentUIPlugin.getImageDescriptor(key); >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/FilterDialog.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/FilterDialog.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/FilterDialog.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/FilterDialog.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,747 @@ >+/******************************************************************************* >+ * 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.internal.filter; >+ >+import java.awt.Dimension; >+import java.awt.Toolkit; >+import java.util.Map; >+ >+import org.eclipse.jface.dialogs.MessageDialog; >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.custom.TableEditor; >+import org.eclipse.swt.events.ModifyEvent; >+import org.eclipse.swt.events.ModifyListener; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.swt.graphics.Point; >+import org.eclipse.swt.graphics.Rectangle; >+import org.eclipse.swt.layout.GridData; >+import org.eclipse.swt.layout.GridLayout; >+import org.eclipse.swt.widgets.Button; >+import org.eclipse.swt.widgets.Combo; >+import org.eclipse.swt.widgets.Composite; >+import org.eclipse.swt.widgets.Display; >+import org.eclipse.swt.widgets.Event; >+import org.eclipse.swt.widgets.Group; >+import org.eclipse.swt.widgets.Label; >+import org.eclipse.swt.widgets.List; >+import org.eclipse.swt.widgets.Listener; >+import org.eclipse.swt.widgets.Shell; >+import org.eclipse.swt.widgets.TabFolder; >+import org.eclipse.swt.widgets.TabItem; >+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.tptp.monitoring.managedagent.ui.explorer.internal.util.ImageUtil; >+ >+ >+public class FilterDialog >+{ >+ private Display _disp; >+ >+ private Shell _shell; >+ >+ private Group _grpExistingFilters; >+ >+ private Group _grpFilterDetails; >+ >+ private Combo _cmbExistingFilters; >+ >+ private Button _btnNewFilter; >+ >+ private Button _btnDeleteFilter; >+ >+ private Label _lblName; >+ >+ private Text _txtName; >+ >+ private TabFolder _tabFldr; >+ >+ private TabItem _tiResName; >+ >+ private TabItem _tiCaps; >+ >+ private TabItem _tiEpr; >+ >+ private Button _btnApply; >+ >+ private Button _btnCancel; >+ >+ private Button _btnAnd; >+ >+ private Button _btnAddCapUri; >+ >+ private Button _btnRemoveCapUri; >+ >+ private Text _txtResName; >+ >+ private Label _lblCapUri; >+ >+ private List _lstCapUris; >+ >+ private Text _txtCapUri; >+ >+ private Button _btnCapMatchAll; >+ >+ private Label _lblEprUri; >+ >+ private Combo _cmbEprUri; >+ >+ private Label _lblRefProperties; >+ >+ private Table _tblRefParams; >+ >+ private Button _btnAddProperty; >+ >+ private Button _btnRemoveProperty; >+ >+ private ComponentSelectionListener _listener; >+ >+ private Filter _filter; >+ >+ private Event _event; >+ >+ public FilterDialog() >+ { >+ MaxFilterPreference.loadFilters(); >+ initUI(); >+ addExistingFilterNames(); >+ } >+ >+ private void initUI() >+ { >+ _disp = Display.getCurrent(); >+ _shell = new Shell(_disp, SWT.SYSTEM_MODAL | SWT.APPLICATION_MODAL | SWT.CLOSE); >+ _shell.setSize(500, 440); >+ centralizeWindow(); >+ _shell.setLayout(new GridLayout(2, false)); >+ _shell.setText(Messages.getString("MAXFilter.FILTER.TITLE.UI.")); >+ Image imgFilter = ImageUtil.getImage(ImageUtil.FILTER_IMAGE); >+ _shell.setImage(imgFilter); >+ initExistingFiltersGroup(_shell); >+ initDetailsGroup(_shell); >+ initButtons(_shell); >+ _listener = new ComponentSelectionListener(this); >+ } >+ >+ private void initExistingFiltersGroup(Composite parent) >+ { >+ _grpExistingFilters = new Group(parent, SWT.NONE); >+ _grpExistingFilters.setText(Messages.getString("MAXFilter.EXFILTER.UI.")); >+ _grpExistingFilters.setLayout(new GridLayout(2, false)); >+ >+ _cmbExistingFilters = new Combo(_grpExistingFilters, SWT.DROP_DOWN | SWT.SINGLE | SWT.READ_ONLY); >+ >+ _cmbExistingFilters.addModifyListener(new ModifyListener() >+ { >+ public void modifyText(ModifyEvent e) >+ { >+ loadFilter(); >+ } >+ }); >+ >+ _btnNewFilter = new Button(_grpExistingFilters, SWT.PUSH); >+ _btnNewFilter.setText(Messages.getString("MAXFilter.NEW.FILTER.UI.")); >+ >+ _btnDeleteFilter = new Button(_grpExistingFilters, SWT.PUSH); >+ _btnDeleteFilter.setText(Messages.getString("MAXFilter.DELETE.FILTER.UI.")); >+ _btnDeleteFilter.setEnabled(false); >+ >+ GridData gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 2; >+ _grpExistingFilters.setLayoutData(gd); >+ >+ gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 2; >+ _cmbExistingFilters.setLayoutData(gd); >+ >+ gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 1; >+ gd.horizontalAlignment = SWT.END; >+ _btnNewFilter.setLayoutData(gd); >+ >+ gd = new GridData(); >+ _btnDeleteFilter.setLayoutData(gd); >+ } >+ >+ private void initDetailsGroup(Composite parent) >+ { >+ _grpFilterDetails = new Group(parent, SWT.NONE); >+ _grpFilterDetails.setText(Messages.getString("MAXFilter.DETAILS.UI.")); >+ _grpFilterDetails.setLayout(new GridLayout(2, false)); >+ >+ _lblName = new Label(_grpFilterDetails, SWT.NONE); >+ _lblName.setText(Messages.getString("MAXFilter.NAME.LABEL.UI.")); >+ >+ _txtName = new Text(_grpFilterDetails, SWT.BORDER); >+ >+ GridData gd = new GridData(); >+ gd.widthHint = 100; >+ _lblName.setLayoutData(gd); >+ >+ gd = new GridData(GridData.FILL_HORIZONTAL); >+ _txtName.setLayoutData(gd); >+ >+ initTabs(_grpFilterDetails); >+ initAndButton(_grpFilterDetails); >+ >+ gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 2; >+ _grpFilterDetails.setLayoutData(gd); >+ } >+ >+ private void initTabs(Composite parent) >+ { >+ _tabFldr = new TabFolder(parent, SWT.NONE); >+ >+ initResourceTab(_tabFldr); >+ initCapsTab(_tabFldr); >+ initEPRTab(_tabFldr); >+ >+ GridData gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 2; >+ _tabFldr.setLayoutData(gd); >+ } >+ >+ private void initResourceTab(Composite parent) >+ { >+ _tiResName = new TabItem((TabFolder) parent, SWT.NONE); >+ _tiResName.setText(Messages.getString("MAXFilter.RESNAME.UI.")); >+ >+ Composite comp = new Composite(parent, SWT.NONE); >+ comp.setLayout(new GridLayout(1, false)); >+ >+ _txtResName = new Text(comp, SWT.BORDER); >+ GridData gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.grabExcessVerticalSpace = false; >+ _txtResName.setLayoutData(gd); >+ >+ _tiResName.setControl(comp); >+ >+ } >+ >+ private void initCapsTab(Composite parent) >+ { >+ _tiCaps = new TabItem((TabFolder) parent, SWT.NONE); >+ _tiCaps.setText(Messages.getString("MAXFilter.CAPABILITY.UI.")); >+ >+ Composite comp = new Composite(parent, SWT.NONE); >+ comp.setLayout(new GridLayout(2, false)); >+ >+ _lblCapUri = new Label(comp, SWT.NONE); >+ _lblCapUri.setText(Messages.getString("MAXFilter.CAPABILITY.URI.UI.")); >+ _txtCapUri = new Text(comp, SWT.BORDER); >+ _txtCapUri.addModifyListener(new ModifyListener() >+ { >+ public void modifyText(ModifyEvent e) >+ { >+ if(_txtCapUri.getText() == null || _txtCapUri.getText().trim().length() == 0) >+ { >+ _btnAddCapUri.setEnabled(false); >+ } >+ else >+ { >+ _btnAddCapUri.setEnabled(true); >+ } >+ } >+ }); >+ >+ _btnCapMatchAll = new Button(comp, SWT.CHECK); >+ _btnCapMatchAll.setText(Messages.getString("MAXFilter.ANDFILTER.UI.")); >+ _btnCapMatchAll.setEnabled(false); >+ >+ _lstCapUris = new List(comp, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE); >+ >+ _btnAddCapUri = new Button(comp, SWT.PUSH); >+ _btnAddCapUri.setText(Messages.getString("MAXFilter.ADD_CAP_URI.UI.")); >+ _btnAddCapUri.setEnabled(false); >+ >+ _btnRemoveCapUri = new Button(comp, SWT.PUSH); >+ _btnRemoveCapUri.setText(Messages.getString("MAXFilter.REM_CAP_URI.UI.")); >+ _btnRemoveCapUri.setEnabled(false); >+ >+ GridData gd = new GridData(); >+ _lblCapUri.setLayoutData(gd); >+ >+ gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.grabExcessHorizontalSpace = true; >+ _txtCapUri.setLayoutData(gd); >+ >+ gd = new GridData(); >+ gd.horizontalAlignment = SWT.BEGINNING; >+ gd.horizontalSpan = 2; >+ _btnCapMatchAll.setLayoutData(gd); >+ >+ gd = new GridData(GridData.FILL_VERTICAL); >+ gd.widthHint = 100; >+ gd.verticalSpan = 2; >+ _lstCapUris.setLayoutData(gd); >+ >+ gd = new GridData(); >+ gd.horizontalAlignment = SWT.BEGINNING; >+ gd.widthHint = 75; >+ _btnAddCapUri.setLayoutData(gd); >+ >+ gd = new GridData(); >+ gd.horizontalAlignment = SWT.BEGINNING; >+ gd.verticalAlignment = SWT.TOP; >+ gd.widthHint = 75; >+ _btnRemoveCapUri.setLayoutData(gd); >+ >+ _tiCaps.setControl(comp); >+ } >+ >+ private void initEPRTab(Composite parent) >+ { >+ _tiEpr = new TabItem((TabFolder) parent, SWT.NONE); >+ _tiEpr.setText(Messages.getString("MAXFilter.EPR.UI.")); >+ >+ Composite comp = new Composite(parent, SWT.NONE); >+ comp.setLayout(new GridLayout(2, false)); >+ >+ _lblEprUri = new Label(comp, SWT.NONE); >+ _lblEprUri.setText(Messages.getString("MAXFilter.EPRURI.UI.")); >+ >+ _cmbEprUri = new Combo(comp, SWT.BORDER); >+ _cmbEprUri.addModifyListener(new ModifyListener() >+ { >+ public void modifyText(ModifyEvent e) >+ { >+ if(_cmbEprUri.getText() == null || _cmbEprUri.getText().trim().length() == 0) >+ { >+ _btnAddProperty.setEnabled(false); >+ } >+ else >+ { >+ _btnAddProperty.setEnabled(true); >+ } >+ } >+ }); >+ >+ _lblRefProperties = new Label(comp, SWT.NONE); >+ _lblRefProperties.setText(Messages.getString("MAXFilter.REFPROP.UI.")); >+ >+ initTable(comp); >+ >+ _btnAddProperty = new Button(comp, SWT.PUSH); >+ _btnAddProperty.setText(Messages.getString("MAXFilter.ADDPROP.UI.")); >+ _btnAddProperty.setEnabled(false); >+ >+ _btnRemoveProperty = new Button(comp, SWT.PUSH); >+ _btnRemoveProperty.setText(Messages.getString("MAXFilter.REMPROP.UI.")); >+ _btnRemoveProperty.setEnabled(false); >+ >+ GridData gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 2; >+ _lblEprUri.setLayoutData(gd); >+ >+ gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 2; >+ _cmbEprUri.setLayoutData(gd); >+ >+ gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 2; >+ _lblRefProperties.setLayoutData(gd); >+ >+ gd = new GridData(); >+ _btnAddProperty.setLayoutData(gd); >+ >+ gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalAlignment = SWT.BEGINNING; >+ _btnRemoveProperty.setLayoutData(gd); >+ >+ _tiEpr.setControl(comp); >+ >+ //test >+ _cmbEprUri.setText("http://localhost:8080/TP/services/TP"); >+ TableItem ti = new TableItem(_tblRefParams, SWT.NONE); >+ ti.setText(new String[] {"muse-wsa", "http://ws.apache.org/muse/addressing", "ResourceId", "MuseResource-1"}); >+ } >+ >+ private void initTable(Composite comp) >+ { >+ _tblRefParams = new Table(comp, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.SINGLE); >+ _tblRefParams.setLinesVisible(true); >+ _tblRefParams.setHeaderVisible(true); >+ >+ TableColumn tcPfx = new TableColumn(_tblRefParams, SWT.NONE); >+ tcPfx.setText(Messages.getString("MAXFilter.PREFIX.UI.")); >+ tcPfx.setWidth(110); >+ >+ TableColumn tcNs = new TableColumn(_tblRefParams, SWT.NONE); >+ tcNs.setText(Messages.getString("MAXFilter.NS.UI.")); >+ tcNs.setWidth(110); >+ >+ TableColumn tcName = new TableColumn(_tblRefParams, SWT.NONE); >+ tcName.setText(Messages.getString("MAXFilter.NAME.LABEL.UI.")); >+ tcName.setWidth(110); >+ >+ TableColumn tcVal = new TableColumn(_tblRefParams, SWT.NONE); >+ tcVal.setText(Messages.getString("MAXFilter.VALUE.UI.")); >+ tcVal.setWidth(113); >+ >+ setInPlaceEditor(_tblRefParams); >+ >+ GridData gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 2; >+ gd.heightHint = 75; >+ _tblRefParams.setLayoutData(gd); >+ } >+ >+ /** >+ * This code taken from SWT code snippets from the following URI >+ * http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.swt.snippets/src/org/eclipse/swt/snippets/Snippet124.java?view=co >+ * @param table >+ */ >+ void setInPlaceEditor(final Table table) >+ { >+ final TableEditor editor = new TableEditor (table); >+ editor.horizontalAlignment = SWT.LEFT; >+ editor.grabHorizontal = true; >+ table.addListener (SWT.MouseDown, new Listener () { >+ public void handleEvent (Event event) { >+ Rectangle clientArea = table.getClientArea (); >+ Point pt = new Point (event.x, event.y); >+ int index = table.getTopIndex (); >+ while (index < table.getItemCount ()) { >+ boolean visible = false; >+ final TableItem item = table.getItem (index); >+ for (int i=0; i<table.getColumnCount (); i++) { >+ Rectangle rect = item.getBounds (i); >+ if (rect.contains (pt)) { >+ final int column = i; >+ final Text text = new Text (table, SWT.NONE); >+ Listener textListener = new Listener () { >+ public void handleEvent (final Event e) { >+ switch (e.type) { >+ case SWT.FocusOut: >+ item.setText (column, text.getText ()); >+ text.dispose (); >+ break; >+ case SWT.Traverse: >+ switch (e.detail) { >+ case SWT.TRAVERSE_RETURN: >+ item.setText (column, text.getText ()); >+ //FALL THROUGH >+ case SWT.TRAVERSE_ESCAPE: >+ text.dispose (); >+ e.doit = false; >+ } >+ break; >+ } >+ } >+ }; >+ text.addListener (SWT.FocusOut, textListener); >+ text.addListener (SWT.Traverse, textListener); >+ editor.setEditor (text, item, i); >+ text.setText (item.getText (i)); >+ text.selectAll (); >+ text.setFocus (); >+ return; >+ } >+ if (!visible && rect.intersects (clientArea)) { >+ visible = true; >+ } >+ } >+ if (!visible) return; >+ index++; >+ } >+ } >+ }); >+ } >+ >+ private void initAndButton(Composite parent) >+ { >+ _btnAnd = new Button(parent, SWT.CHECK); >+ _btnAnd.setText(Messages.getString("MAXFilter.ANDFILTER.UI.")); >+ >+ GridData gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.horizontalSpan = 2; >+ _btnAnd.setLayoutData(gd); >+ } >+ >+ private void initButtons(Composite parent) >+ { >+ _btnApply = new Button(parent, SWT.PUSH); >+ _btnApply.setText(Messages.getString("MAXFilter.APPLY.UI.")); >+ >+ _btnCancel = new Button(parent, SWT.PUSH); >+ _btnCancel.setText(Messages.getString("MAXFilter.CANCEL.UI.")); >+ >+ GridData gd = new GridData(GridData.FILL_HORIZONTAL); >+ gd.grabExcessHorizontalSpace = true; >+ gd.horizontalAlignment = SWT.END; >+ gd.widthHint = 75; >+ _btnApply.setLayoutData(gd); >+ >+ gd = new GridData(); >+ gd.widthHint = 75; >+ _btnCancel.setLayoutData(gd); >+ } >+ >+ private void centralizeWindow() >+ { >+ Toolkit tk = Toolkit.getDefaultToolkit(); >+ Dimension scrSize = tk.getScreenSize(); >+ int wdth = scrSize.width; >+ int hght = scrSize.height; >+ int x = (wdth - 500)/2; >+ int y = (hght - 440)/2; >+ _shell.setLocation(x, y); >+ } >+ >+ >+ public Filter showWindow() >+ { >+ _shell.open (); >+ while (!_shell.isDisposed ()) { >+ if (!_disp.readAndDispatch ()) _disp.sleep (); >+ } >+ return _filter; >+ } >+ >+ private void addExistingFilterNames() >+ { >+ //_cmbExistingFilters.add("None"); >+ java.util.List filters = MaxFilterPreference.getFilters(); >+ if(filters == null || filters.size() == 0) >+ { >+ _cmbExistingFilters.setItems(new String[]{"None"}); >+ _cmbExistingFilters.select(1); >+ return; >+ } >+ String filterNames[] = new String[filters.size() + 1]; >+ filterNames[0] = "None"; >+ for(int i = 0; i < filters.size(); i++) >+ { >+ Filter f = (Filter) filters.get(i); >+ String fName = f.getFilterName(); >+ if(fName == null || fName.trim().length() == 0) >+ fName = "NoName--" + (i + 1); >+ filterNames[i + 1] = fName; >+ //_cmbExistingFilters.add(f.getFilterName()); >+ Map mp = FilterUtil.getEPRMap(f.getEpr()); >+ if(mp == null || mp.size() == 0) >+ continue; >+ String addrURL = (String) mp.get(FilterUtil.ADDRESS_KEY); >+ if(addrURL == null || addrURL.trim().length() == 0) >+ { >+ continue; >+ } >+ _cmbEprUri.add(addrURL); >+ } >+ _cmbExistingFilters.setItems(filterNames); >+ _cmbExistingFilters.select(1); >+ } >+ >+ private void loadFilter() >+ { >+ String fName = _cmbExistingFilters.getText(); >+ if(fName == null || fName.trim().length() == 0) >+ return; >+ fName = fName.trim(); >+ if(fName.equals("None")) >+ { >+ clearAll(); >+ return; >+ } >+ else >+ { >+ _btnDeleteFilter.setEnabled(true); >+ } >+ Filter f = getFilterFromName(fName); >+ loadFilterDetails(f); >+ notifyListeners(); >+ } >+ >+ public void clearAll() >+ { >+ _btnDeleteFilter.setEnabled(false); >+ _txtName.setText(""); >+ _txtResName.setText(""); >+ _txtCapUri.setText(""); >+ _lstCapUris.removeAll(); >+ _cmbEprUri.setText(""); >+ _tblRefParams.removeAll(); >+ } >+ >+ private void notifyListeners() >+ { >+ _txtCapUri.notifyListeners(SWT.Modify, _event); >+ _lstCapUris.notifyListeners(SWT.Selection, _event); >+ _btnAddCapUri.notifyListeners(SWT.Modify, _event); >+ _cmbEprUri.notifyListeners(SWT.Modify, _event); >+ _tblRefParams.notifyListeners(SWT.Selection, _event); >+ } >+ >+ private Filter getFilterFromName(String name) >+ { >+ java.util.List filters = MaxFilterPreference.getFilters(); >+ if(filters == null || filters.size() == 0) >+ return null; >+ for(int i = 0; i < filters.size(); i++) >+ { >+ Filter f = (Filter) filters.get(i); >+ if(f.getFilterName().trim().equals(name)) >+ return f; >+ } >+ return null; >+ } >+ >+ private void loadFilterDetails(Filter f) >+ { >+ if(f == null) >+ { >+ MessageDialog.openError(_shell, Messages.getString("MAXFilter.Filter.Error.Title."), Messages.getString("MAXFilter.Filter.Load.Error.")); >+ return; >+ } >+ _txtName.setText(f.getFilterName()); >+ _txtResName.setText(f.getResName().equals("NO-RN") ? "" : f.getResName()); >+ if(!f.getCapUris()[0].equals("NO-CAP")) >+ _lstCapUris.setItems(f.getCapUris()); >+ if(_lstCapUris.getItemCount() > 2) >+ { >+ _btnCapMatchAll.setEnabled(true); >+ } >+ else >+ { >+ _btnCapMatchAll.setEnabled(false); >+ } >+ if(f.getOverallMatch() == 1) >+ { >+ _btnAnd.setSelection(true); >+ } >+ else >+ { >+ _btnAnd.setSelection(false); >+ } >+ if(f.getCapMatch() == 1) >+ { >+ _btnCapMatchAll.setSelection(true); >+ } >+ else >+ { >+ _btnCapMatchAll.setSelection(false); >+ } >+ String eprStr = f.getEpr(); >+ if(eprStr.trim().equals("NO-EPR")) >+ return; >+ Map mp = FilterUtil.getEPRMap(eprStr); >+ if(mp == null || mp.size() == 0) >+ return; >+ String addrURL = (String) mp.get(FilterUtil.ADDRESS_KEY); >+ if(addrURL == null || addrURL.trim().length() == 0) >+ { >+ MessageDialog.openError(_shell, Messages.getString("MAXFilter.Filter.Error.Title."), Messages.getString("MAXFilter.Filter.Load.Error.")); >+ return; >+ } >+ _cmbEprUri.setText(addrURL); >+ String[] params = (String[]) mp.get(FilterUtil.REFPARAMS_KEY); >+ if(params == null || params.length == 0) >+ return; >+ for(int i = 0; i < params.length; i++) >+ { >+ if(params[i] == null || params[i].trim().length() == 0) >+ continue; >+ TableItem ti = new TableItem(_tblRefParams, SWT.NONE); >+ ti.setText(FilterUtil.getParamPrefString(params[i])); >+ } >+ } >+ >+ /*public static void main(String args[]) >+ { >+ new FilterDialog().showWindow(); >+ }*/ >+ >+ public Shell getShell() { >+ return _shell; >+ } >+ >+ public Combo getCmbExistingFilters() { >+ return _cmbExistingFilters; >+ } >+ >+ public Button getBtnNewFilter() { >+ return _btnNewFilter; >+ } >+ >+ public Button getBtnDeleteFilter() { >+ return _btnDeleteFilter; >+ } >+ >+ public Text getTxtName() { >+ return _txtName; >+ } >+ >+ public Button getBtnApply() { >+ return _btnApply; >+ } >+ >+ public Button getBtnCancel() { >+ return _btnCancel; >+ } >+ >+ public Button getBtnAnd() { >+ return _btnAnd; >+ } >+ >+ public Button getBtnAddCapUri() { >+ return _btnAddCapUri; >+ } >+ >+ public Button getBtnRemCapUri() { >+ return _btnRemoveCapUri; >+ } >+ >+ public Text getTxtResName() { >+ return _txtResName; >+ } >+ >+ public List getLstCapUris() { >+ return _lstCapUris; >+ } >+ >+ public Text getTxtCapUri() { >+ return _txtCapUri; >+ } >+ >+ public Button getBtnCapMatchAll() { >+ return _btnCapMatchAll; >+ } >+ >+ public Combo getCmbEprUri() { >+ return _cmbEprUri; >+ } >+ >+ public Table getTblRefParams() { >+ return _tblRefParams; >+ } >+ >+ public Button getBtnAddProperty() { >+ return _btnAddProperty; >+ } >+ >+ public Button getBtnRemoveProperty() { >+ return _btnRemoveProperty; >+ } >+ >+ public Filter getFilter() >+ { >+ return _filter; >+ } >+ >+ public void setFilter(Filter f) >+ { >+ this._filter = f; >+ } >+} >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Comparator.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Comparator.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Comparator.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Comparator.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,23 @@ >+package org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter; >+ >+import org.eclipse.jface.viewers.ViewerComparator; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.CollectionNode; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.OperationNode; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.PropertyNode; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.provisional.controller.PropertySourceCollectionNode; >+ >+public class Comparator extends ViewerComparator { >+ >+ public int category(Object element) >+ { >+ if(element instanceof PropertySourceCollectionNode) >+ return 1; >+ else if(element instanceof CollectionNode) >+ return 2; >+ else if(element instanceof OperationNode) >+ return 3; >+ else if(element instanceof PropertyNode) >+ return 4; >+ return 0; >+ } >+} >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/ComponentSelectionListener.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/ComponentSelectionListener.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/ComponentSelectionListener.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/ComponentSelectionListener.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,179 @@ >+/******************************************************************************* >+ * 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.internal.filter; >+ >+import org.eclipse.swt.SWT; >+import org.eclipse.swt.events.SelectionAdapter; >+import org.eclipse.swt.events.SelectionEvent; >+import org.eclipse.swt.widgets.TableItem; >+ >+import sun.rmi.runtime.GetThreadPoolAction; >+ >+public class ComponentSelectionListener extends SelectionAdapter >+{ >+ private FilterDialog _dialog; >+ >+ public ComponentSelectionListener(FilterDialog dlg) >+ { >+ this._dialog = dlg; >+ addListeners(); >+ } >+ >+ private void addListeners() >+ { >+ _dialog.getBtnAddCapUri().addSelectionListener(this); >+ _dialog.getBtnRemCapUri().addSelectionListener(this); >+ _dialog.getLstCapUris().addSelectionListener(this); >+ _dialog.getBtnAddProperty().addSelectionListener(this); >+ _dialog.getBtnApply().addSelectionListener(this); >+ _dialog.getBtnCancel().addSelectionListener(this); >+ _dialog.getBtnDeleteFilter().addSelectionListener(this); >+ _dialog.getBtnNewFilter().addSelectionListener(this); >+ _dialog.getBtnRemoveProperty().addSelectionListener(this); >+ _dialog.getTblRefParams().addSelectionListener(this); >+ } >+ >+ public void widgetSelected(SelectionEvent e) >+ { >+ Object src = e.getSource(); >+ if(src == _dialog.getBtnAddProperty()) >+ { >+ TableItem ti = new TableItem(_dialog.getTblRefParams(), SWT.NONE); >+ ti.setText(new String[] {"pfx", "ns", "Name"}); >+ } >+ else if(src == _dialog.getBtnRemoveProperty()) >+ { >+ _dialog.getBtnRemoveProperty().setEnabled(false); >+ int selIdx = _dialog.getTblRefParams().getSelectionIndex(); >+ if(selIdx == -1) >+ { >+ return; >+ } >+ _dialog.getTblRefParams().remove(selIdx); >+ } >+ else if(src == _dialog.getBtnAddCapUri()) >+ { >+ _dialog.getLstCapUris().add(_dialog.getTxtCapUri().getText().trim()); >+ if(_dialog.getLstCapUris().getItemCount() > 1) >+ { >+ _dialog.getBtnCapMatchAll().setEnabled(true); >+ } >+ else >+ { >+ _dialog.getBtnCapMatchAll().setSelection(false); >+ _dialog.getBtnCapMatchAll().setEnabled(false); >+ } >+ _dialog.getTxtCapUri().setText(""); >+ _dialog.getBtnAddCapUri().setEnabled(false); >+ } >+ else if(src == _dialog.getBtnRemCapUri()) >+ { >+ _dialog.getBtnRemCapUri().setEnabled(false); >+ int selIdx = _dialog.getLstCapUris().getSelectionIndex(); >+ if(selIdx == -1) >+ return; >+ _dialog.getLstCapUris().remove(selIdx); >+ if(_dialog.getLstCapUris().getItemCount() > 1) >+ { >+ _dialog.getBtnCapMatchAll().setEnabled(true); >+ } >+ else >+ { >+ _dialog.getBtnCapMatchAll().setSelection(false); >+ _dialog.getBtnCapMatchAll().setEnabled(false); >+ } >+ } >+ else if(src == _dialog.getLstCapUris()) >+ { >+ if(_dialog.getLstCapUris().getSelectionIndex() != -1) >+ { >+ _dialog.getBtnRemCapUri().setEnabled(true); >+ } >+ else >+ { >+ _dialog.getBtnRemCapUri().setEnabled(false); >+ } >+ } >+ else if(src == _dialog.getBtnApply()) >+ { >+ Filter filter = FilterUtil.getFilterFromDialog(_dialog); >+ if(filter == null) >+ { >+ return; >+ } >+ int fIdx = getFilterIndex(filter); >+ if(fIdx == -1) //Indicates new filter >+ { >+ MaxFilterPreference.getFilters().add(filter); >+ } >+ else >+ { >+ MaxFilterPreference.getFilters().remove(fIdx); >+ MaxFilterPreference.getFilters().add(fIdx, filter); >+ } >+ _dialog.setFilter(filter); >+ MaxFilterPreference.saveFilters(); >+ _dialog.getShell().dispose(); >+ } >+ else if(src == _dialog.getBtnCancel()) >+ { >+ _dialog.setFilter(null); >+ _dialog.getShell().dispose(); >+ } >+ else if(src == _dialog.getBtnNewFilter()) >+ { >+ _dialog.getCmbExistingFilters().select(0); >+ //_dialog.getCmbExistingFilters().setEnabled(false); >+ _dialog.clearAll(); >+ } >+ else if(src == _dialog.getBtnDeleteFilter()) >+ { >+ int idx = _dialog.getCmbExistingFilters().getSelectionIndex(); >+ if(idx == -1 || idx == 0) >+ { >+ return; >+ } >+ MaxFilterPreference.getFilters().remove(idx - 1); >+ MaxFilterPreference.saveFilters(); >+ _dialog.getCmbExistingFilters().remove(idx); >+ _dialog.getBtnDeleteFilter().setEnabled(false); >+ _dialog.getCmbExistingFilters().select(0); >+ } >+ else if(src == _dialog.getTblRefParams()) >+ { >+ int selCnt = _dialog.getTblRefParams().getSelectionCount(); >+ if(selCnt == 0) >+ { >+ _dialog.getBtnRemoveProperty().setEnabled(false); >+ } >+ else if(selCnt == 1) >+ { >+ _dialog.getBtnRemoveProperty().setEnabled(true); >+ } >+ } >+ } >+ >+ private int getFilterIndex(Filter f) >+ { >+ java.util.List filters = MaxFilterPreference.getFilters(); >+ if(filters == null || filters.size() == 0) >+ return -1; >+ for(int i = 0; i < filters.size(); i++) >+ { >+ Filter f1 = (Filter) filters.get(i); >+ if(f1.equals(f)) >+ return i; >+ } >+ return -1; >+ } >+} >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Filter.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Filter.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Filter.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Filter.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,254 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 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.internal.filter; >+ >+import java.util.Map; >+import java.util.StringTokenizer; >+ >+public class Filter >+{ >+ private String _filterName; >+ >+ private String _resName; >+ >+ private String[] _capUris; >+ >+ private String _epr; >+ >+ private int _overallMatch = 0; //0 indicates OR and 1 indicates AND >+ >+ private int _capMatch = 0; >+ >+ private Object[] _filter; >+ >+ public static final int MATCH_ALL = 1; >+ >+ public static final int MATCH_ANY = 0; >+ >+ public Filter() >+ { >+ >+ } >+ >+ private Object[] createFilter() >+ { >+ Object[] filter = new Object[5]; >+ String matchCriteria = "OR"; >+ if(getOverallMatch() == 1) >+ { >+ matchCriteria = "AND"; >+ } >+ filter[0] = _resName; >+ filter[1] = matchCriteria; >+ String[] capUriFilter = createCapUriFilter(_capUris); >+ filter[2] = capUriFilter; >+ filter[3] = matchCriteria; >+ filter[4] = _epr; >+ return filter; >+ } >+ >+ >+ private String[] createCapUriFilter(String[] uris) >+ { >+ String filt = getCapUriPrefString(uris); >+ if(filt.equals("NO-CAP")) >+ { >+ return new String[] {"NO-CAP"}; >+ } >+ if(filt.indexOf('&') == -1 && filt.indexOf('|') == -1) >+ { >+ return new String[] {filt}; >+ } >+ String separChar = "|"; >+ if(filt.indexOf('&') != -1) >+ separChar = "&"; >+ StringTokenizer st = new StringTokenizer(filt, separChar); >+ String caps[] = new String[2 * st.countTokens() - 1]; >+ int idx = 0; >+ while(st.hasMoreTokens()) >+ { >+ caps[idx] = st.nextToken(); >+ idx ++; >+ if(idx == caps.length) >+ break; >+ if(separChar.equals("|")) >+ caps[idx] = "OR"; >+ else >+ caps[idx] = "AND"; >+ idx ++; >+ } >+ return caps; >+ } >+ >+ private String getCapUriPrefString(String uris[]) >+ { >+ if(uris == null || uris.length == 0) >+ { >+ return "NO-CAP"; >+ } >+ if(uris.length == 1 && uris[0].equals("NO-CAP")) >+ { >+ return "NO-CAP"; >+ } >+ char matchCriteria = '|'; >+ if(getCapMatch() == 1) >+ { >+ matchCriteria = '&'; >+ } >+ String filt = ""; >+ for(int i = 0; i < uris.length; i++) >+ { >+ if(i < uris.length - 1) >+ { >+ filt += uris[i] + matchCriteria; >+ } >+ else >+ { >+ filt += uris[i]; >+ } >+ } >+ return filt; >+ } >+ >+ >+ public String getFilterName() >+ { >+ return _filterName; >+ } >+ >+ public String getResName() >+ { >+ return _resName; >+ } >+ >+ public String[] getCapUris() >+ { >+ return _capUris; >+ } >+ >+ public String getEpr() >+ { >+ return _epr; >+ } >+ >+ public void setFilterName(String name) >+ { >+ _filterName = name; >+ } >+ >+ public void setResName(String name) >+ { >+ _resName = name; >+ } >+ >+ public void setCapUris(String[] uris) >+ { >+ _capUris = uris; >+ } >+ >+ public void setEpr(String epr) >+ { >+ this._epr = epr; >+ } >+ >+ public int getOverallMatch() { >+ return _overallMatch; >+ } >+ >+ >+ public void setOverallMatch(int match) >+ { >+ this._overallMatch = match; >+ } >+ >+ public int getCapMatch() >+ { >+ return _capMatch; >+ } >+ >+ public void setCapMatch(int match) >+ { >+ this._capMatch = match; >+ } >+ >+ public Object[] getFilter() >+ { >+ if(_filter == null) >+ _filter = createFilter(); >+ return _filter; >+ } >+ >+ public String toString() >+ { >+ //send it like "FilterName->[resName]|/&[capuri1|/&capuri2|/&...]|/&[addr(pfx+ns+name+val,....)]"; >+ String fStr = ""; >+ char match = '|'; >+ fStr += _filterName + "->"; >+ if(_overallMatch == 1) >+ match = '&'; >+ if(_resName == null || _resName.trim().length() == 0) >+ { >+ _resName = "NO-RN"; >+ } >+ String capUriStr = getCapUriPrefString(_capUris); >+ String eprStr = getEPRPrefString(_epr); >+ return _filterName + "->[" + _resName + "]" + match + "[" + capUriStr + "]" + match + "[" + eprStr + "]"; >+ //return ""; >+ } >+ >+ private String getEPRPrefString(String es) >+ { >+ //send it like addr$(pfx+ns+name+val,....) >+ Map eprMap = FilterUtil.getEPRMap(es); >+ if(eprMap == null) >+ return "NO-EPR"; >+ String addr = (String) eprMap.get(FilterUtil.ADDRESS_KEY); >+ String retStr = addr; >+ String[] params = (String[]) eprMap.get(FilterUtil.REFPARAMS_KEY); >+ if(params == null || params.length == 0) >+ return retStr; >+ for(int i = 0; i < params.length; i++) >+ { >+ if(params[i] == null || params[i].trim().length() == 0) >+ continue; >+ if(retStr.indexOf('(') == -1) >+ retStr += '('; >+ if(i < params.length - 1) >+ retStr += getParamPrefString(params[i]) + ','; >+ else >+ retStr += getParamPrefString(params[i]); >+ } >+ if(retStr.indexOf('(') != -1) >+ retStr += ')'; >+ return retStr; >+ } >+ >+ public boolean equals(Object o) >+ { >+ if(o == null) >+ return false; >+ if(o instanceof Filter) >+ { >+ if(this.getFilterName().trim().equals(((Filter) o).getFilterName().trim())) >+ return true; >+ } >+ return false; >+ } >+ >+ private String getParamPrefString(String param) >+ { >+ // <muse-wsa:ResourceId xmlns:muse-wsa="http://ws.apache.org/muse/addressing">MuseResource-1</muse-wsa:ResourceId> >+ String pa[] = FilterUtil.getParamPrefString(param); >+ return pa[0] + "+" + pa[1] + "+" + pa[2] + "+" + pa[3]; >+ } >+} >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/messages.properties >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/messages.properties >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/messages.properties >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/messages.properties 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,50 @@ >+############################################################################### >+# Copyright (c) 2006 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 >+############################################################################### >+ >+# NLS_MESSAGEFORMAT_VAR >+# NLS_ENCODING=UTF-8 >+ >+MAXFilter.APPLY.UI.=Apply >+MAXFilter.PROPERTY.UI.=Property >+MAXFilter.VALUE.UI.=Value >+MAXFilter.DETAILS.UI.=Details >+MAXFilter.FILTER.TITLE.UI.=Specify Filter Criteria >+MAXFilter.EXFILTER.UI.=Existing Filters >+MAXFilter.NAME.LABEL.UI.=Name >+MAXFilter.ANDFILTER.UI.=Match All >+MAXFilter.CANCEL.UI.=Cancel >+MAXFilter.RESNAME.UI.=Resource Name >+MAXFilter.CAPABILITY.UI.=Capabilities >+MAXFilter.EPR.UI.=End Point Reference >+MAXFilter.NEW.FILTER.UI.=Create New >+MAXFilter.CAPABILITY.URI.UI.=Namespace URI >+MAXFilter.ADD_CAP_URI.UI.=Add >+MAXFilter.REM_CAP_URI.UI.=Remove >+MAXFilter.ADDPROP.UI.=Add Property >+MAXFilter.REMPROP.UI.=Remove Property >+MAXFilter.EPRURI.UI.=Specify the URI >+MAXFilter.REFPROP.UI.=Reference Properties >+MAXFilter.PREFIX.UI.=Prefix >+MAXFilter.NS.UI.=Namespace >+MAXFilter.DELETE.FILTER.UI.=Delete >+ >+ >+# ERROR_MESSAGES >+MAXFilter.Filter.Error.Title.=Error >+MAXFilter.Filter.Name.Error.=The filter name is not valid. >+MAXFilter.Filter.Name.Duplicate.Error.=The specified filter name already exists. >+MAXFilter.Filter.Invalid.Error.=No filter criteria specified.\n Please specify any one of the filter criteria. >+MAXFilter.Filter.Prefix.Error.=Please enter the prefix for the parameter >+MAXFilter.Filter.NS.Error.=Please enter the name space for the parameter >+MAXFilter.Filter.PropName.Error.=Please enter the name for the parameter >+MAXFilter.Filter.Value.Error.=Please enter the value for the parameter >+MAXFilter.Filter.Load.Error.=Could not load the selected filter >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/MaxFilterPreference.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/MaxFilterPreference.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/MaxFilterPreference.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/MaxFilterPreference.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,165 @@ >+package org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter; >+ >+import java.util.ArrayList; >+import java.util.HashMap; >+import java.util.List; >+import java.util.Map; >+import java.util.StringTokenizer; >+ >+import org.eclipse.jface.preference.IPreferenceStore; >+import org.eclipse.jface.preference.PreferenceStore; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin; >+ >+public class MaxFilterPreference >+{ >+ private static IPreferenceStore _prefs; >+ >+ private static ArrayList _filters = new ArrayList(); >+ >+ public static final String PREF_FILTERS = "FILTERS"; >+ >+ private String filePath = "D:\\Eclipse_Europa\\Workspace_From_13_Feb_07\\org.eclipse.tptp.monitoring.managedagent.ui\\filterPrefs.properties"; >+ >+ public MaxFilterPreference() >+ { >+ _prefs = new PreferenceStore(filePath); >+ } >+ >+ public static void loadFilters() >+ { >+ if(_prefs == null) >+ _prefs = ManagedAgentUIPlugin.getDefault().getPreferenceStore(); >+ _filters = new ArrayList(); >+ String filters = _prefs.getString(PREF_FILTERS); >+ if(filters == null || filters.trim().length() == 0) >+ { >+ return; >+ } >+ StringTokenizer st = new StringTokenizer(filters, ";"); >+ while(st.hasMoreTokens()) >+ { >+ Filter f = getFilterFromPrefString(st.nextToken()); >+ if(f != null) >+ _filters.add(f); >+ } >+ } >+ >+ private static Filter getFilterFromPrefString(String ps) >+ { >+ if(ps == null || ps.trim().length() == 0) >+ return null; >+ >+ String name = ps.substring(0, ps.indexOf("->")); >+ if(name == null) >+ name = ""; >+ >+ String resName = ps.substring(ps.indexOf('[') + 1, ps.indexOf(']')); >+ if(resName == null) >+ resName = "NO-RN"; >+ >+ String match = ps.indexOf("]|") == -1 ? "]&" : "]|"; >+ String capUriStr = ps.substring(ps.indexOf(match) + 3, ps.lastIndexOf(match)); >+ String capUris[] = getCapUrisFromPrefString(capUriStr); >+ String rawEprStr = ps.substring(ps.lastIndexOf('[') + 1, ps.lastIndexOf(']')); >+ String eprStr = getEPRFromPrefString(rawEprStr); >+ >+ int overAllMatch = match.indexOf('&') == -1 ? 0 : 1; >+ int capMatch = capUriStr.indexOf('&') == -1 ? 0 : 1; >+ >+ Filter f = new Filter(); >+ f.setFilterName(name); >+ f.setResName(resName); >+ f.setCapUris(capUris); >+ f.setEpr(eprStr); >+ f.setCapMatch(capMatch); >+ f.setOverallMatch(overAllMatch); >+ >+ return f; >+ } >+ >+ private static String[] getCapUrisFromPrefString(String uris) >+ { >+ if(uris == null || uris.trim().length() == 0 || uris.equals("NO-CAP")) >+ return new String[] {"NO-CAP"}; >+ String separChar = "|"; >+ if(uris.indexOf('&') != -1) >+ separChar = "&"; >+ StringTokenizer st = new StringTokenizer(uris, separChar); >+ String caps[] = new String[st.countTokens()]; >+ int idx = 0; >+ while(st.hasMoreTokens()) >+ { >+ caps[idx] = st.nextToken(); >+ idx ++; >+ if(idx == caps.length) >+ break; >+ } >+ return caps; >+ } >+ >+ private static String getEPRFromPrefString(String rawStr) >+ { >+ if(rawStr == null) >+ return "NO-EPR"; >+ if(rawStr.trim().equals("NO-EPR") || rawStr.indexOf('(') == -1) >+ return rawStr.trim(); >+ Map map = formatRawEPR(rawStr); >+ if(map == null || map.size() == 0) >+ return "NO-EPR"; >+ Object[] keys = map.keySet().toArray(); >+ String addrURL = (String) keys[0]; >+ String[][] params = (String[][]) map.get(addrURL); >+ return FilterUtil.getEPRString(addrURL, params); >+ } >+ >+ private static Map formatRawEPR(String rawEpr) >+ { >+ rawEpr = rawEpr.trim(); >+ String addrURL = rawEpr.substring(0, rawEpr.indexOf('(')); >+ String paramStr = rawEpr.substring(rawEpr.indexOf('(') + 1, rawEpr.lastIndexOf(')')); >+ StringTokenizer st = new StringTokenizer(paramStr, ","); >+ String[][] params = new String[st.countTokens()][4]; >+ int idx = 0; >+ while(st.hasMoreTokens()) >+ { >+ String param = st.nextToken(); >+ if(param == null || param.trim().length() == 0) >+ continue; >+ StringTokenizer st1 = new StringTokenizer(param, "+"); >+ if(st1.countTokens() != 4) >+ continue; >+ for(int i = 0; i < 4; i++) >+ { >+ params[idx][i] = st1.nextToken(); >+ } >+ idx ++; >+ } >+ Map map = new HashMap(); >+ map.put(addrURL, params); >+ return map; >+ } >+ >+ public static void saveFilters() >+ { >+ if(_filters == null || _filters.size() == 0) >+ { >+ _prefs.putValue(PREF_FILTERS, ""); >+ return; >+ } >+ String fs = ""; >+ for(int i = 0; i < _filters.size(); i++) >+ { >+ Filter f = (Filter) _filters.get(i); >+ if(i < _filters.size() - 1) >+ fs += f.toString() + ";"; >+ else >+ fs += f.toString(); >+ } >+ _prefs.setValue(PREF_FILTERS, fs); >+ } >+ >+ public static List getFilters() >+ { >+ return _filters; >+ } >+} >Index: icons/obj16/filter.gif >=================================================================== >RCS file: icons/obj16/filter.gif >diff -N icons/obj16/filter.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/obj16/filter.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,2 @@ >+GIF89aÄ8D]ovWd|we}\ ¥T³MZ]þýïýòÆýñÆýñÇýòÇüæ½®uºº?´z´{¹¹ªo©o¯t®t¯t¦kÿÿÿ!ù,X 'diã`Á!ª¦QAí«ØB>¢"Çáð¢R¡@( >+)M BÁH,¶Ò#óÐd0Fãa]?#Ülr;N/6«ípx.r)&!; >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/FilterUtil.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/FilterUtil.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/FilterUtil.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/FilterUtil.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,459 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 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.internal.filter; >+ >+import java.util.ArrayList; >+import java.util.HashMap; >+import java.util.Hashtable; >+import java.util.List; >+import java.util.Map; >+ >+import org.eclipse.emf.common.util.EList; >+import org.eclipse.jface.dialogs.MessageDialog; >+import org.eclipse.swt.widgets.TableItem; >+import org.eclipse.tptp.monitoring.managedagent.provisional.model.ManagedResource; >+import org.eclipse.tptp.monitoring.managedagent.provisional.model.Property; >+import org.eclipse.tptp.monitoring.managedagent.provisional.model.util.ModelUtils; >+import org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.ManagedAgentUIPlugin; >+import org.eclipse.tptp.monitoring.managedagent.ui.launch.provisional.common.IConnectionHelper; >+ >+public class FilterUtil >+{ >+ >+ private static Filter filter; >+ >+ private static String resName; >+ >+ private static String[] capUris; >+ >+ private static String epr; >+ >+ private static Object[] filt; >+ >+ public static final String ADDRESS_KEY = "Address"; >+ >+ public static final String REFPARAMS_KEY = "RefParams"; >+ >+ private static Map _conf = null; >+ >+ private static ManagedResource _mr = null; >+ >+ public static boolean matchFilter(ManagedResource mr) >+ { >+ _mr = mr; >+ boolean match = false; >+ _conf = ModelUtils.getMapFromConnProperties(mr.getConnectionProperties()); >+ String mrName = mr.getName(); >+ String mrEpr = (String) _conf.get("epr"); >+ String caps[] = getImplementedCapabilities(mr); >+ if(filt[1].equals("AND")) >+ { >+ match = matchResourceName(mrName, 1) && matchCapabilities(caps, 1) && matchEPR(mrEpr, 1); >+ System.out.println(matchResourceName(mrName, 1) + " && " + matchCapabilities(caps, 1) + " && " + matchEPR(mrEpr, 1)); >+ } >+ else >+ { >+ match = matchResourceName(mrName, 0) || matchCapabilities(caps, 0) || matchEPR(mrEpr, 0); >+ System.out.println(matchResourceName(mrName, 1) + " || " + matchCapabilities(caps, 1) + " || " + matchEPR(mrEpr, 1)); >+ } >+ >+ return match; >+ } >+ >+ private static String[] getImplementedCapabilities(ManagedResource mr) >+ { >+ EList props = mr.getProperties(); >+ for(int i = 0; i < props.size(); i++) >+ { >+ Property prop = (Property) props.get(i); >+ if(prop.getName().indexOf("ManageabilityCapability") != -1) >+ { >+ EList capList = prop.getValue(); >+ if(capList == null || capList.size() == 0) >+ { >+ return null; >+ } >+ String caps[] = new String[capList.size()]; >+ for(int j = 0; j < capList.size(); j++) >+ { >+ caps[j] = ((String) capList.get(j)).trim(); >+ } >+ return caps; >+ } >+ } >+ return null; >+ } >+ >+ private static boolean matchResourceName(String name, int match) >+ { >+ if(resName == null || name == null) >+ return false; >+ if(match == 1 && resName.trim().equals("NO-RN")) >+ return true; >+ if(name.equals(resName)) >+ return true; >+ return false; >+ } >+ >+ private static boolean matchCapabilities(String caps[], int match) >+ { >+ if(capUris != null && match == 1 && capUris[0].trim().equals("NO-CAP") && capUris.length == 1) >+ return true; >+ if(capUris == null || caps == null) >+ return false; >+ int capMatch = 0; >+ if(capUris.length > 1) >+ { >+ if(capUris[1].equals("AND")) >+ { >+ capMatch = 1; >+ } >+ } >+ if(capMatch == 0) >+ { >+ for(int i = 0; i < capUris.length; i++) >+ { >+ if(capUris[i].equals("OR")) >+ continue; >+ if(inList(caps, capUris[i])) >+ return true; >+ } >+ } >+ else if(capMatch == 1) >+ { >+ for(int i = 0; i < capUris.length; i++) >+ { >+ if(capUris[i].equals("AND")) >+ continue; >+ if(!inList(caps, capUris[i])) >+ return false; >+ } >+ return true; >+ } >+ return false; >+ } >+ >+ private static boolean matchEPR(String eprStr, int match) >+ { >+ if(epr == null || eprStr == null) >+ return false; >+ if(match == 1 && epr.trim().equals("NO-EPR")) >+ return true; >+ >+ >+ IConnectionHelper helper = ManagedAgentUIPlugin.getConnectionHelper((String)_conf.get("ManagedAgentType")); >+ >+ Map eprMap1 = new Hashtable(); >+ Map eprMap2 = new Hashtable(); >+ eprMap1.put("epr", epr); >+ eprMap2.put("epr", eprStr); >+ if( ! helper.isSameResource(eprMap1, eprMap2) ){ >+ return false; >+ }else{ >+ return true; >+ } >+ >+ /*Map eprFilterMap = getEPRMap(epr); >+ if(eprFilterMap == null || eprFilterMap.size() == 0) >+ { >+ return false; >+ } >+ >+ Map eprStrMap = getEPRMap(eprStr); >+ String addr1 = ((String) eprFilterMap.get(ADDRESS_KEY)).trim(); >+ String addr2 = ((String) eprStrMap.get(ADDRESS_KEY)).trim(); >+ if(!addr1.equals(addr2)) >+ { >+ return false; >+ } >+ String filterRPs[] = (String[]) eprFilterMap.get(REFPARAMS_KEY); >+ String resourceRPs[] = (String[]) eprStrMap.get(REFPARAMS_KEY); >+ if(filterRPs == null || resourceRPs == null) >+ { >+ return false; >+ } >+ if(filterRPs.length != resourceRPs.length) >+ { >+ return false; >+ } >+ for(int i = 0; i < filterRPs.length; i++) >+ { >+ if(!inList(filterRPs, resourceRPs[i])) >+ { >+ return false; >+ } >+ } >+ return true; >+ */ >+ } >+ >+ public static Filter getFilterFromDialog(FilterDialog dlg) >+ { >+ if(dlg == null) >+ { >+ return null; >+ } >+ String fName = dlg.getTxtName().getText(); >+ if(fName == null || fName.trim().length() == 0) >+ { >+ MessageDialog.openError(dlg.getShell(), Messages.getString("MAXFilter.Filter.Error.Title."), Messages.getString("MAXFilter.Filter.Name.Error.")); >+ return null; >+ } >+ if(dlg.getCmbExistingFilters().getText() != null && dlg.getCmbExistingFilters().getText().equals("None")) >+ { >+ boolean valid = validateFilterName(fName); >+ if(!valid) >+ { >+ MessageDialog.openError(dlg.getShell(), Messages.getString("MAXFilter.Filter.Error.Title."), Messages.getString("MAXFilter.Filter.Name.Duplicate.Error.")); >+ return null; >+ } >+ } >+ boolean valid = validate(dlg); >+ if(!valid) >+ { >+ return null; >+ } >+ String resName = dlg.getTxtResName().getText(); >+ if(resName == null || resName.trim().length() == 0) >+ { >+ resName = "NO-RN"; >+ } >+ String capUris[] = dlg.getLstCapUris().getItems(); >+ if(capUris == null || capUris.length == 0) >+ { >+ capUris = new String[] {"NO-CAP"}; >+ } >+ String eprStr = getEPRString(dlg); >+ if(resName == null && capUris == null && eprStr == null) >+ { >+ MessageDialog.openError(dlg.getShell(), Messages.getString("MAXFilter.Filter.Error.Title."), Messages.getString("MAXFilter.Filter.Invalid.Error.")); >+ return null; >+ } >+ int overallMatch = dlg.getBtnAnd().getSelection() ? 1 : 0; >+ int capMatch = dlg.getBtnCapMatchAll().getSelection() ? 1 : 0; >+ Filter filter = new Filter(); >+ filter.setFilterName(fName); >+ filter.setResName(resName); >+ filter.setCapUris(capUris); >+ filter.setEpr(eprStr); >+ filter.setOverallMatch(overallMatch); >+ filter.setCapMatch(capMatch); >+ return filter; >+ } >+ >+ private static boolean validateFilterName(String name) >+ { >+ List filters = MaxFilterPreference.getFilters(); >+ if(filters == null || filters.size() == 0) >+ { >+ return true; >+ } >+ for(int i = 0; i < filters.size(); i++) >+ { >+ Filter f = (Filter) filters.get(i); >+ if(f.getFilterName().trim().equals(name.trim())) >+ return false; >+ } >+ return true; >+ } >+ >+ >+ private static boolean validate(FilterDialog dlg) >+ { >+ String addrURL = dlg.getCmbEprUri().getText(); >+ if(addrURL == null || addrURL.trim().length() == 0) >+ { >+ return true; >+ } >+ TableItem[] tis = dlg.getTblRefParams().getItems(); >+ if(tis != null && tis.length > 0) >+ { >+ for(int i = 0; i < tis.length; i++) >+ { >+ TableItem ti = tis[i]; >+ String pfx = ti.getText(0); >+ if(pfx == null || pfx.trim().length() == 0) >+ { >+ MessageDialog.openError(dlg.getShell(), Messages.getString("MAXFilter.Filter.Error.Title."), Messages.getString("MAXFilter.Filter.Prefix.Error.") + (i + 1)); >+ return false; >+ } >+ String ns = ti.getText(1); >+ if(ns == null || ns.trim().length() == 0) >+ { >+ MessageDialog.openError(dlg.getShell(), Messages.getString("MAXFilter.Filter.Error.Title."), Messages.getString("MAXFilter.Filter.NS.Error.") + (i + 1)); >+ return false; >+ } >+ String name = ti.getText(2); >+ if(name == null || name.trim().length() == 0) >+ { >+ MessageDialog.openError(dlg.getShell(), Messages.getString("MAXFilter.Filter.Error.Title."), Messages.getString("MAXFilter.Filter.PropName.Error.") + (i + 1)); >+ return false; >+ } >+ String val = ti.getText(3); >+ if(val == null || val.trim().length() == 0) >+ { >+ MessageDialog.openError(dlg.getShell(), Messages.getString("MAXFilter.Filter.Error.Title."), Messages.getString("MAXFilter.Filter.Value.Error.") + (i + 1)); >+ return false; >+ } >+ } >+ } >+ return true; >+ } >+ >+ private static String getEPRString(FilterDialog dlg) >+ { >+ String addrURL = dlg.getCmbEprUri().getText(); >+ String params[][] = null; >+ TableItem[] tis = dlg.getTblRefParams().getItems(); >+ if(tis != null && tis.length > 0) >+ { >+ params = new String[tis.length][4]; >+ for(int i = 0; i < tis.length; i++) >+ { >+ TableItem ti = tis[i]; >+ for(int j = 0; j < 4; j++) >+ { >+ params[i][j] = ti.getText(j); >+ } >+ } >+ } >+ return getEPRString(addrURL, params); >+ } >+ >+ public static String getEPRString(String addrURL, String[][] params) >+ { >+ if(addrURL == null || addrURL.trim().length() == 0) >+ { >+ return "NO-EPR"; >+ } >+ String eprStr = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + "\n" + "<wsa:EndpointReference xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">" + "\n" + "<wsa:Address>"; >+ eprStr += addrURL + "</wsa:Address>\n"; >+ if(params != null && params.length > 0) >+ { >+ eprStr += "<wsa:ReferenceParameters>\n"; >+ for(int i = 0; i < params.length; i++) >+ { >+ String param[] = params[i]; >+ String pfx = param[0]; >+ if(pfx == null || pfx.trim().length() == 0) >+ { >+ pfx = ""; >+ } >+ String ns = param[1]; >+ if(ns == null) >+ { >+ ns = ""; >+ } >+ String name = param[2]; >+ if(name == null) >+ { >+ name = ""; >+ } >+ String val = param[3]; >+ if(val == null) >+ { >+ val = ""; >+ } >+ eprStr += "<" + pfx + ":" + name + " xmlns:" + pfx + "=\"" + ns + "\">" + val + "</" + pfx + ":" + name + ">\n"; >+ } >+ eprStr += "</wsa:ReferenceParameters>\n"; >+ } >+ eprStr += "</wsa:EndpointReference>"; >+ return eprStr; >+ } >+ >+ public static Filter getFilter() >+ { >+ return filter; >+ } >+ >+ public static void setFilter(Filter f) >+ { >+ filter = f; >+ if(filter == null) >+ { >+ return; >+ } >+ filt = filter.getFilter(); >+ resName = (String) filt[0]; >+ capUris = (String[]) filt[2]; >+ epr = (String) filt[4]; >+ } >+ >+ public static Map getEPRMap(String orgEprStr) >+ { >+ String eprStr = orgEprStr.replace('\n', ' '); >+ if(eprStr == null || eprStr.trim().length() == 0) >+ return null; >+ int addrIdx = eprStr.indexOf(":Address"); >+ if(addrIdx == -1) >+ return null; >+ int endOfAddressElementIdx = eprStr.indexOf('>', addrIdx+1); >+ int startOfClosingTagIdx = eprStr.indexOf('<', endOfAddressElementIdx); >+ Map map = new HashMap(); >+ String address = eprStr.substring(endOfAddressElementIdx+1, startOfClosingTagIdx); >+ map.put(ADDRESS_KEY, address.trim()); >+ int refParamIdx = eprStr.indexOf("<wsa:ReferenceParameters>"); >+ if(refParamIdx != -1) >+ { >+ String rps = eprStr.substring(refParamIdx + "<wsa:ReferenceParameters>".length(), eprStr.indexOf("</wsa:ReferenceParameters>")); >+ String params[] = rps.split("\n"); >+ ArrayList prm = new ArrayList(); >+ for(int i = 0; i < params.length; i++) >+ { >+ if(params[i] == null || params[i].trim().length() == 0) >+ continue; >+ prm.add(params[i].trim()); >+ } >+ params = new String[prm.size()]; >+ for(int i = 0; i < params.length; i++) >+ { >+ params[i] = (String) prm.get(i); >+ } >+ map.put(REFPARAMS_KEY, params); >+ } >+ return map; >+ } >+ >+ private static boolean inList(String[] vals, String val) >+ { >+ if(val == null || vals == null) >+ { >+ return false; >+ } >+ for(int i = 0; i < vals.length; i++) >+ { >+ if(vals[i] == null) >+ continue; >+ if(vals[i].trim().equals(val.trim())) >+ { >+ return true; >+ } >+ } >+ return false; >+ } >+ >+ public static String[] getParamPrefString(String param) >+ { >+ if(param == null || param.trim().length() == 0) >+ { >+ return new String[] {"", "", "", ""}; >+ } >+ param = param.trim(); >+ String pfx = param.substring(1, param.indexOf(':')); >+ String ns = param.substring(param.indexOf('=') + 2, param.indexOf('>') - 1); >+ String name = param.substring(param.indexOf(":") + 1, param.indexOf(' ')); >+ String val = param.substring(param.indexOf('>') + 1, param.indexOf("</")); >+ return new String[] {pfx, ns, name, val}; >+ } >+} >Index: icons/obj16/sort.gif >=================================================================== >RCS file: icons/obj16/sort.gif >diff -N icons/obj16/sort.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/obj16/sort.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,3 @@ >+GIF89aÄ_??????_?_¿?¿?¿¿¿¿ß¿¿¿¿¿ÿÿÿ!ù,_ $Êq(Ë8>Ä#¬JOàª2Ó»$¹Üîq1Ýh<HÂeñ0) >+ÊÕt7ܪà0Í;4$`|S?ÓëAÙÁE?2»KÎy|3" >+\#ab\!; >Index: icons/obj16/unsort.gif >=================================================================== >RCS file: icons/obj16/unsort.gif >diff -N icons/obj16/unsort.gif >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ icons/obj16/unsort.gif 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,2 @@ >+GIF89a÷_??????_?_¿?¿?¿¿¿¿ß¿¿¿¿¿ÿÿÿ,?%¨àÀ$D0ð?J?¸°a'"PÈPà$8dÅ T0ñ$J$,pùRfÉ 6f|?2#Í+JTO'4?à`£=].mú4«?© >+°°kFrý `ÀvÌH´èÏ; >Index: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Messages.java >=================================================================== >RCS file: src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Messages.java >diff -N src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Messages.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ src/org/eclipse/tptp/monitoring/managedagent/ui/explorer/internal/filter/Messages.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,33 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 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.internal.filter; >+ >+import java.util.MissingResourceException; >+import java.util.ResourceBundle; >+ >+public class Messages { >+ private static final String BUNDLE_NAME = "org.eclipse.tptp.monitoring.managedagent.ui.explorer.internal.filter.messages"; //$NON-NLS-1$ >+ >+ private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle >+ .getBundle(BUNDLE_NAME); >+ >+ private Messages() { >+ } >+ >+ public static String getString(String key) { >+ try { >+ return RESOURCE_BUNDLE.getString(key); >+ } catch (MissingResourceException e) { >+ return '!' + key + '!'; >+ } >+ } >+}
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