From: <bea...@us...> - 2006-10-17 19:26:52
|
Revision: 296 http://svn.sourceforge.net/cishell/?rev=296&view=rev Author: bearsfan Date: 2006-10-17 12:26:48 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Added support for viewing and saving from within the DataManager viewer Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/Activator.java Modified: trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2006-10-17 17:04:38 UTC (rev 295) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2006-10-17 19:26:48 UTC (rev 296) @@ -91,10 +91,12 @@ private Map dataToDataGUIItemMap; private AlgorithmFactory saveFactory; + private AlgorithmFactory viewFactory; private DiscardListener discardListener; private SaveListener saveListener; + private ViewListener viewListener; public AbstractDataManagerView(String brandPluginID) { manager = Activator.getDataManagerService(); @@ -102,8 +104,10 @@ dataToDataGUIItemMap = new HashMap(); if (manager == null) { - Activator.getLogService().log(LogService.LOG_ERROR, - "Data Manager Service unavailable!"); + LogService log = Activator.getLogService(); + if (log != null) { + log.log(LogService.LOG_ERROR, "Data Manager Service unavailable!"); + } } } @@ -133,15 +137,14 @@ MenuItem saveItem = new MenuItem(menu, SWT.PUSH); saveItem.setText("Save"); - this.saveFactory = Activator.getSaveService(); - if (this.saveFactory != null) { - saveListener = new SaveListener(); - saveItem.addListener(SWT.Selection, saveListener); - } - else { - saveItem.setEnabled(false); - } + saveListener = new SaveListener(); + saveItem.addListener(SWT.Selection, saveListener); + MenuItem viewItem = new MenuItem(menu, SWT.PUSH); + viewItem.setText("View"); + viewListener = new ViewListener(); + viewItem.addListener(SWT.Selection, viewListener); + MenuItem renameItem = new MenuItem(menu, SWT.PUSH); renameItem.setText("Rename"); renameItem.addListener(SWT.Selection, new Listener() { @@ -185,7 +188,9 @@ public void bundleChanged(BundleEvent event) { if (event.getType() == BundleEvent.STARTED) { manager = Activator.getDataManagerService(); - manager.addDataManagerListener(this); + if (manager != null) { + manager.addDataManagerListener(this); + } } } @@ -303,14 +308,38 @@ * their is an available Persister for the given model */ private void updateContextMenu(Data model) { - // reset the enablement of the save context menu appropriately - // boolean saveEnabled = (model.getData() != null) && - // !(IVC.getInstance().getPersistenceRegistry() - // .getSupportingPersisters(model.getData()).isEmpty()); - boolean saveEnabled = false; - menu.getItem(0).setEnabled(saveEnabled); + saveFactory = enableMenuItemCheck(saveFactory, + "org.cishell.reference.gui.persistence.save.Save", model, 0); + viewFactory = enableMenuItemCheck(viewFactory, + "org.cishell.reference.gui.persistence.view.FileView", model, 1); } + + private AlgorithmFactory enableMenuItemCheck( + AlgorithmFactory algorithmFactory, String service, Data model, + int menuNdx) { + boolean validSaveFactory = false; + if (algorithmFactory == null) { + algorithmFactory = Activator.getService(service); + if (algorithmFactory != null) { + validSaveFactory = true; + } + } else { + validSaveFactory = true; + } + boolean enabled = false; + if (validSaveFactory) { + Algorithm algorithm = algorithmFactory.createAlgorithm( + new Data[] { model }, new Hashtable(), Activator + .getCIShellContext()); + if (algorithm != null) { + enabled = true; + } + } + menu.getItem(menuNdx).setEnabled(enabled); + return algorithmFactory; + } + /* * Listens for selection in the GUI of data models by selecting their item * in the tree and updates the ModelManager appropriately @@ -445,17 +474,30 @@ private class SaveListener implements Listener { public void handleEvent(Event event) { - if (AbstractDataManagerView.this.saveFactory != null) { - TreeItem[] selection = AbstractDataManagerView.this.tree.getSelection(); - Data data = ((DataGUIItem)selection[0].getData()).getModel(); - Algorithm algorithm = AbstractDataManagerView.this.saveFactory.createAlgorithm(new Data[]{data}, - new Hashtable(), - Activator.getCIShellContext()); + if (saveFactory != null) { + Data data[] = AbstractDataManagerView.this.manager + .getSelectedData(); + Algorithm algorithm = saveFactory + .createAlgorithm(data, new Hashtable(), Activator + .getCIShellContext()); algorithm.execute(); } } } + private class ViewListener implements Listener { + public void handleEvent(Event event) { + if (viewFactory != null) { + Data data[] = AbstractDataManagerView.this.manager + .getSelectedData(); + Algorithm algorithm = viewFactory + .createAlgorithm(data, new Hashtable(), Activator + .getCIShellContext()); + algorithm.execute(); + } + } + } + private class DiscardListener implements Listener { public void handleEvent(Event event) { TreeItem[] selection = AbstractDataManagerView.this.tree Modified: trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/Activator.java =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/Activator.java 2006-10-17 17:04:38 UTC (rev 295) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/Activator.java 2006-10-17 19:26:48 UTC (rev 296) @@ -71,17 +71,23 @@ } protected static LogService getLogService() { - LogService log = (LogService) context.getService( + ServiceReference serviceReference = context.getServiceReference(DataManagerService.class.getName()); + LogService log = null; + + if (serviceReference != null) { + log = (LogService) context.getService( context.getServiceReference(LogService.class.getName())); + } return log; } - protected static AlgorithmFactory getSaveService() { + protected static AlgorithmFactory getService(String service) { ServiceReference[] refs; try { refs = context.getServiceReferences(AlgorithmFactory.class.getName(), - "(&("+Constants.SERVICE_PID+"=org.cishell.reference.gui.persistence.save.Save))"); + "(&("+Constants.SERVICE_PID+"="+service+"))"); + //"(&("+Constants.SERVICE_PID+"=org.cishell.reference.gui.persistence.save.Save))"); if (refs != null && refs.length > 0) { return (AlgorithmFactory) context.getService(refs[0]); } else { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |