From: <bea...@us...> - 2006-09-19 14:00:45
|
Revision: 200 http://svn.sourceforge.net/cishell/?rev=200&view=rev Author: bearsfan Date: 2006-09-19 07:00:20 -0700 (Tue, 19 Sep 2006) Log Message: ----------- Ported the previous version of the datamodel view to support the CISHell infrastructure. Just have the basic functionality working including 'rename' and 'discard'. Save is yet to be implemented. Added Paths: ----------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java Copied: trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java (from rev 173, trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/DataManagerView.java) =================================================================== --- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java (rev 0) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2006-09-19 14:00:20 UTC (rev 200) @@ -0,0 +1,546 @@ +/* **************************************************************************** + * CIShell: Cyberinfrastructure Shell, An Algorithm Integration Framework. + * + * All rights reserved. This program and the accompanying materials are made + * available under the terms of the Apache License v2.0 which accompanies + * this distribution, and is available at: + * http://www.apache.org/licenses/LICENSE-2.0.html + * + * Created on Aug 21, 2006 at Indiana University. + * + * Contributors: + * Indiana University - + * ***************************************************************************/ +package org.cishell.reference.gui.datamanager; + +import java.util.Dictionary; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; +import java.util.StringTokenizer; + +import org.cishell.app.service.datamanager.DataManagerListener; +import org.cishell.app.service.datamanager.DataManagerService; +import org.cishell.framework.data.Data; +import org.cishell.framework.data.DataProperty; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.TreeEditor; +import org.eclipse.swt.events.FocusAdapter; +import org.eclipse.swt.events.FocusEvent; +import org.eclipse.swt.events.KeyAdapter; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.events.KeyListener; +import org.eclipse.swt.events.MouseAdapter; +import org.eclipse.swt.events.MouseEvent; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.MenuItem; +import org.eclipse.swt.widgets.Text; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.swt.widgets.TreeItem; +import org.eclipse.ui.part.ViewPart; +import org.osgi.service.log.LogService; + +/** + * + * @author Bruce Herr (bh...@bh...) + */ +public abstract class AbstractDataManagerView extends ViewPart implements + DataManagerListener { + private String brandPluginID; + + private DataManagerService manager; + + private TreeViewer viewer; + + private TreeEditor editor; + + private Text newEditor; + + private DataGUIItem rootItem; + + // flag to notify if a tree item is currently being updated so there + // isnt a conflict among various listeners + private boolean updatingTreeItem; + + private Tree tree; + + private Menu menu; + + private Map dataToDataGUIItemMap; + + private DiscardListener discardListener; + + public AbstractDataManagerView(String brandPluginID) { + manager = Activator.getDataManagerService(); + this.brandPluginID = brandPluginID; + dataToDataGUIItemMap = new HashMap(); + + if (manager == null) { + Activator.getLogService().log(LogService.LOG_ERROR, + "Data Manager Service unavailable!"); + } + } + + /** + * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) + */ + public void createPartControl(Composite parent) { + + // Label label = new Label(parent, SWT.NONE); + // label.setText("Data Manager"); + viewer = new TreeViewer(parent); + viewer.setContentProvider(new DataTreeContentProvider()); + viewer.setLabelProvider(new DataTreeLabelProvider()); + + rootItem = new DataGUIItem(null, null, this.brandPluginID); + viewer.setInput(rootItem); + viewer.expandAll(); + + // grab the tree and add the appropriate listeners + tree = viewer.getTree(); + tree.addSelectionListener(new DatamodelSelectionListener()); + tree.addMouseListener(new ContextMenuListener()); + + // setup the context menu for the tree + menu = new Menu(tree); + menu.setVisible(false); + + MenuItem saveItem = new MenuItem(menu, SWT.PUSH); + saveItem.setText("Save"); + saveItem.setEnabled(false); + + MenuItem renameItem = new MenuItem(menu, SWT.PUSH); + renameItem.setText("Rename"); + renameItem.addListener(SWT.Selection, new Listener() { + public void handleEvent(Event event) { + handleInput(); + } + }); + + MenuItem discardItem = new MenuItem(menu, SWT.PUSH); + discardItem.setText("Discard"); + discardListener = new DiscardListener(); + discardItem.addListener(SWT.Selection, discardListener); + tree.setMenu(menu); + + // allow cells to be edited on double click or when pressing enter on + // them + editor = new TreeEditor(tree); + editor.horizontalAlignment = SWT.LEFT; + editor.grabHorizontal = true; + editor.minimumWidth = 50; + TreeItemEditorListener editorListener = new TreeItemEditorListener( + editor); + tree.addMouseListener(editorListener); + tree.addKeyListener(editorListener); + + // listen to IVC for models being added by plugins + manager.addDataManagerListener(this); + + getSite().setSelectionProvider(new DataModelSelectionProvider()); + } + + /** + * @see org.eclipse.ui.part.WorkbenchPart#setFocus() + */ + public void setFocus() { + viewer.getControl().setFocus(); + } + + public void dataAdded(final Data data, String label) { + // get the data from the model needed to setup the DataModelGUIItem + Dictionary modelDictionary = data.getMetaData(); + + Data parent = (Data) modelDictionary.get(DataProperty.PARENT); + DataGUIItem parentItem; + if (parent == null) { + // if it has no parent, it is a child of the root + parentItem = rootItem; + } else { + // otherwise find the associated DataModelGUIItem for the parent + parentItem = (DataGUIItem) dataToDataGUIItemMap.get(parent); + } + + // create the new DataModelGUIItem + final DataGUIItem item = new DataGUIItem(data, parentItem, + this.brandPluginID); + // notify the parent DataModelGUIItem of its new child + parentItem.addChild(item); + // keep a reference to the new model in the model->TreeItem mapping so + // that + // it can be used in the future if it has a child + dataToDataGUIItemMap.put(data, item); + + // update the ModelManager with the new selection + Set selection = new HashSet(); + selection.add(data); + manager.setSelectedData((Data[]) selection.toArray(new Data[0])); + Display.getDefault().syncExec(new Runnable() { + public void run() { + if (!tree.isDisposed()) { + // update the TreeView + viewer.refresh(); + // context menu may need to have options enabled/disabled + // based on the new selection + updateContextMenu(data); + // update the global selection + viewer.expandToLevel(item, 0); + selectItem(item, tree.getItems()); + getSite().getSelectionProvider().setSelection( + new StructuredSelection(new Data[] { data })); + setFocus(); + } + } + }); + } + + private void selectItem(DataGUIItem item, TreeItem[] items) { + for (int i = 0; i < items.length; i++) { + TreeItem treeItem = items[i]; + if (treeItem.getData() == item) { + manager.setSelectedData(new Data[] { item.getModel() }); + treeItem.getParent().setSelection(new TreeItem[] { treeItem }); + return; + } + selectItem(item, treeItem.getItems()); + } + } + + public void dataLabelChanged(Data data, String label) { + if (data != null && label != null) { + TreeItem[] treeItems = tree.getItems(); + for (int i = 0; i < treeItems.length; ++i) { + if (((DataGUIItem)treeItems[i].getData()).getModel() == data) { + updateText(label, treeItems[i]); + break; + } + } + } + } + + public void dataRemoved(Data data) { + TreeItem[] treeItems = tree.getItems(); + for (int i = 0; i < treeItems.length; ++i) { + if (((DataGUIItem)treeItems[i].getData()).getModel() == data) { + tree.clear(tree.indexOf(treeItems[i]), false); + } + } + } + + public void dataSelected(final Data[] data) { + if (data != null) { + Display.getDefault().syncExec(new Runnable() { + public void run() { + Set itemSet = new HashSet(); + for (int i = 0; i < data.length; ++i) { + + TreeItem[] treeItems = tree.getItems(); + for (int j = 0; j < treeItems.length; ++j) { + if (treeItems[i].getData() == data[i]) { + itemSet.add(treeItems[i]); + break; + } + } + } + tree.setSelection((TreeItem[]) itemSet + .toArray(new TreeItem[0])); + } + }); + } + } + + /* + * enables/disables save item in the context menu based on whether or not + * 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); + } + + /* + * Listens for selection in the GUI of data models by selecting their item + * in the tree and updates the ModelManager appropriately + */ + private class DatamodelSelectionListener extends SelectionAdapter { + public void widgetSelected(SelectionEvent e) { + Tree tree = (Tree) e.getSource(); + TreeItem[] selection = tree.getSelection(); + Set models = new HashSet(); + Data[] modelArray = new Data[selection.length]; + + for (int i = 0; i < selection.length; i++) { + Data model = ((DataGUIItem) selection[i].getData()).getModel(); + updateContextMenu(model); + models.add(model); + modelArray[i] = model; + } + + manager.setSelectedData(modelArray); + getSite().getSelectionProvider().setSelection( + new StructuredSelection(modelArray)); + } + } + + /* + * allows for direct text editing of the label of a DataModelGUIItem by + * using a Text control associated with a TreeEditor. This allows for + * renaming of data models without a pop-up dialog or anything + */ + private void handleInput() { + // Clean up any previous editor control + Control oldEditor = editor.getEditor(); + + if (oldEditor != null) { + oldEditor.dispose(); + } + + // Identify the selected row, only allow input if there is a single + // selected row + TreeItem[] selection = tree.getSelection(); + + if (selection.length != 1) { + return; + } + + final TreeItem item = selection[0]; + + if (item == null) { + return; + } + + // The control that will be the editor must be a child of the Table + newEditor = new Text(tree, SWT.NONE); + newEditor.setText(item.getText()); + newEditor.addFocusListener(new FocusAdapter() { + public void focusLost(FocusEvent e) { + if (!updatingTreeItem) { + //updateText(newEditor.getText(), item); + manager.setLabel(((DataGUIItem)item.getData()).getModel(), newEditor.getText()); + } + } + }); + + // ENTER ESC + newEditor.addKeyListener(new KeyAdapter() { + public void keyReleased(KeyEvent e) { + if ((e.character == SWT.CR) && !updatingTreeItem) { + updateText(newEditor.getText(), item); + } else if (e.keyCode == SWT.ESC) { + newEditor.dispose(); + } + } + }); + newEditor.selectAll(); + newEditor.setFocus(); + editor.setEditor(newEditor, item); + } + + /* + * updates the actual Label property of the DataModel that is being edited + * by the TreeEditor for renaming - only if the new name is valid though + */ + private void updateText(String newLabel, TreeItem item) { + updatingTreeItem = true; + + if (newLabel.startsWith(">")) + newLabel = newLabel.substring(1); + + if (isValid(newLabel)) { + editor.getItem().setText(newLabel); + + DataGUIItem treeItem = (DataGUIItem) item.getData(); + Data model = treeItem.getModel(); + model.getMetaData().put(DataProperty.LABEL, newLabel); + viewer.refresh(); + newEditor.dispose(); + } else { + String message = "Invalid data model name. The following characters" + + " are not allowed:\n\n" + + "`~!@#$%^&*()+=[{]}\\|;:'\",<>/?"; + Activator.getLogService().log(LogService.LOG_WARNING, message); + handleInput(); + } + + updatingTreeItem = false; + } + + // not valid chars: `~!@#$%^&*()+=[{]}\|;:'",<>/? + private boolean isValid(String label) { + StringTokenizer st = new StringTokenizer(" " + label + " ", + "`~!@#$%^&*()+=[{]}\\|;:'\",<>/?"); + + return st.countTokens() == 1; + } + + /* + * Listens for right-clicks on TreeItems and opens the context menu when + * needed. + */ + private class ContextMenuListener extends MouseAdapter { + public void mouseUp(MouseEvent event) { + if (event.button == 3) { + TreeItem item = tree.getItem(new Point(event.x, event.y)); + + if (item != null) { + tree.getMenu().setVisible(true); + } else { + tree.getMenu().setVisible(false); + } + } + } + } + + private class DiscardListener implements Listener { + public void handleEvent(Event event) { + TreeItem[] selection = AbstractDataManagerView.this.tree + .getSelection(); + + for (int i = 0; i < selection.length; i++) { + DataGUIItem item = (DataGUIItem) selection[i].getData(); + DataGUIItem parent = item.getParent(); + + if (parent != null) { + parent.removeChild(item); + } + + dataToDataGUIItemMap.remove(item.getModel()); + manager.removeData(item.getModel()); + } + + manager.setSelectedData(new Data[0]); + viewer.refresh(); + } + } + + /* + * Listens for double clicks or Enter presses on a TreeItem to cause that + * item to become editable to rename it. + */ + private class TreeItemEditorListener extends MouseAdapter implements + KeyListener { + // private TreeEditor editor; + + public TreeItemEditorListener(TreeEditor editor) { + // this.editor = editor; + } + + public void keyReleased(KeyEvent e) { + if ((e.keyCode == SWT.CR) && !updatingTreeItem) { + handleInput(); + } + } + + public void mouseDoubleClick(MouseEvent e) { + handleInput(); + } + + public void keyPressed(KeyEvent e) { + } + } + + private class DataModelSelectionProvider implements ISelectionProvider { + + private Set listeners = new HashSet(); + + private ISelection selection; + + public void addSelectionChangedListener( + ISelectionChangedListener listener) { + listeners.add(listener); + } + + public ISelection getSelection() { + return selection; + } + + public void removeSelectionChangedListener( + ISelectionChangedListener listener) { + listeners.remove(listener); + } + + private TreeItem getTreeItem(Data model, TreeItem[] items) { + TreeItem result = null; + int i = 0; + while (i < items.length && result == null) { + DataGUIItem data = ((DataGUIItem) items[i].getData()); + if (data != null) { // not sure why this happens.. + Data item = data.getModel(); + + if (item == model) + result = items[i]; + else { + // check the children recursively + result = getTreeItem(model, items[i].getItems()); + } + } else { + // check the children recursively + result = getTreeItem(model, items[i].getItems()); + } + + i++; + } + + return result; + } + + public void setSelection(ISelection selection) { + if (selection != this.selection) { + this.selection = selection; + viewer.refresh(true); + + if (selection != null + && selection instanceof IStructuredSelection) { + IStructuredSelection ss = (IStructuredSelection) selection; + Iterator iterator = ss.iterator(); + TreeItem[] newTreeSelection = new TreeItem[ss.size()]; + int i = 0; + while (iterator.hasNext()) { + Object next = iterator.next(); + if (next instanceof Data) { + TreeItem result = getTreeItem((Data) next, tree + .getItems()); + newTreeSelection[i] = result; + viewer.expandToLevel( + dataToDataGUIItemMap.get(next), 0); + } + i++; + } + + tree.setSelection(newTreeSelection); + } + + Iterator listenerIterator = listeners.iterator(); + while (listenerIterator.hasNext()) { + ISelectionChangedListener listener = (ISelectionChangedListener) listenerIterator + .next(); + SelectionChangedEvent event = new SelectionChangedEvent( + this, selection); + listener.selectionChanged(event); + } + } + } + + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bea...@us...> - 2006-09-28 19:34:59
|
Revision: 217 http://svn.sourceforge.net/cishell/?rev=217&view=rev Author: bearsfan Date: 2006-09-28 12:34:50 -0700 (Thu, 28 Sep 2006) Log Message: ----------- When a new data object is added to the viewer, it will be highlighted. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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-09-28 19:14:41 UTC (rev 216) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2006-09-28 19:34:50 UTC (rev 217) @@ -189,9 +189,8 @@ dataToDataGUIItemMap.put(data, item); // update the ModelManager with the new selection - Set selection = new HashSet(); + final Set selection = new HashSet(); selection.add(data); - manager.setSelectedData((Data[]) selection.toArray(new Data[0])); Display.getDefault().syncExec(new Runnable() { public void run() { if (!tree.isDisposed()) { @@ -202,27 +201,12 @@ updateContextMenu(data); // update the global selection viewer.expandToLevel(item, 0); - selectItem(item, tree.getItems()); - getSite().getSelectionProvider().setSelection( - new StructuredSelection(new Data[] { data })); - setFocus(); + manager.setSelectedData((Data[]) selection.toArray(new Data[0])); } } }); } - private void selectItem(DataGUIItem item, TreeItem[] items) { - for (int i = 0; i < items.length; i++) { - TreeItem treeItem = items[i]; - if (treeItem.getData() == item) { - manager.setSelectedData(new Data[] { item.getModel() }); - treeItem.getParent().setSelection(new TreeItem[] { treeItem }); - return; - } - selectItem(item, treeItem.getItems()); - } - } - public void dataLabelChanged(Data data, String label) { if (data != null && label != null) { TreeItem[] treeItems = tree.getItems(); @@ -246,11 +230,11 @@ public void dataSelected(final Data[] data) { if (data != null) { + //setFocus(); Display.getDefault().syncExec(new Runnable() { public void run() { Set itemSet = new HashSet(); for (int i = 0; i < data.length; ++i) { - TreeItem[] treeItems = tree.getItems(); for (int j = 0; j < treeItems.length; ++j) { if (treeItems[i].getData() == data[i]) { @@ -261,6 +245,8 @@ } tree.setSelection((TreeItem[]) itemSet .toArray(new TreeItem[0])); + getSite().getSelectionProvider().setSelection( + new StructuredSelection(data)); } }); } @@ -298,8 +284,6 @@ } manager.setSelectedData(modelArray); - getSite().getSelectionProvider().setSelection( - new StructuredSelection(modelArray)); } } @@ -440,10 +424,10 @@ */ private class TreeItemEditorListener extends MouseAdapter implements KeyListener { - // private TreeEditor editor; + private TreeEditor editor; public TreeItemEditorListener(TreeEditor editor) { - // this.editor = editor; + this.editor = editor; } public void keyReleased(KeyEvent e) { @@ -458,8 +442,12 @@ public void keyPressed(KeyEvent e) { } + + public void mouseDown(MouseEvent e) { + } } + private class DataModelSelectionProvider implements ISelectionProvider { private Set listeners = new HashSet(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 282 http://svn.sourceforge.net/cishell/?rev=282&view=rev Author: bh2 Date: 2006-10-16 12:33:28 -0700 (Mon, 16 Oct 2006) Log Message: ----------- if a data object is added to the data manager and the parent data object isn't in the gui then it will parent the added data object to the root Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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-16 17:13:55 UTC (rev 281) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2006-10-16 19:33:28 UTC (rev 282) @@ -190,6 +190,11 @@ } else { // otherwise find the associated DataModelGUIItem for the parent parentItem = (DataGUIItem) dataToDataGUIItemMap.get(parent); + + //The parent may not be in the GUI. If its not, then use root item + if (parentItem == null) { + parentItem = rootItem; + } } // create the new DataModelGUIItem This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bea...@us...> - 2006-10-17 15:44:05
|
Revision: 294 http://svn.sourceforge.net/cishell/?rev=294&view=rev Author: bearsfan Date: 2006-10-17 08:43:39 -0700 (Tue, 17 Oct 2006) Log Message: ----------- Check to see if a BundleContext is around to get a datamanager, commented out unused variable in TreeItemEditorListener Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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 15:40:07 UTC (rev 293) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2006-10-17 15:43:39 UTC (rev 294) @@ -484,10 +484,10 @@ */ private class TreeItemEditorListener extends MouseAdapter implements KeyListener { - private TreeEditor editor; + //private TreeEditor editor; public TreeItemEditorListener(TreeEditor editor) { - this.editor = editor; + //this.editor = editor; } public void keyReleased(KeyEvent e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <bea...@us...> - 2006-10-26 20:16:01
|
Revision: 322 http://svn.sourceforge.net/cishell/?rev=322&view=rev Author: bearsfan Date: 2006-10-26 13:15:50 -0700 (Thu, 26 Oct 2006) Log Message: ----------- Fixed a bug in the AbstractDataManagerView, an index was bad. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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-26 18:22:21 UTC (rev 321) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2006-10-26 20:15:50 UTC (rev 322) @@ -288,8 +288,8 @@ for (int i = 0; i < data.length; ++i) { TreeItem[] treeItems = tree.getItems(); for (int j = 0; j < treeItems.length; ++j) { - if (treeItems[i].getData() == data[i]) { - itemSet.add(treeItems[i]); + if (treeItems[j].getData() == data[i]) { + itemSet.add(treeItems[j]); break; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ter...@us...> - 2007-05-14 18:55:36
|
Revision: 398 http://svn.sourceforge.net/cishell/?rev=398&view=rev Author: terkhorn Date: 2007-05-14 11:55:13 -0700 (Mon, 14 May 2007) Log Message: ----------- Added support for the "View as.." method for viewing files. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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 2007-05-14 13:18:33 UTC (rev 397) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2007-05-14 18:55:13 UTC (rev 398) @@ -20,7 +20,6 @@ import java.util.Iterator; import java.util.Map; import java.util.Set; -import java.util.StringTokenizer; import org.cishell.app.service.datamanager.DataManagerListener; import org.cishell.app.service.datamanager.DataManagerService; @@ -41,7 +40,6 @@ import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.KeyAdapter; import org.eclipse.swt.events.KeyEvent; -import org.eclipse.swt.events.KeyListener; import org.eclipse.swt.events.MouseAdapter; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.SelectionAdapter; @@ -92,11 +90,14 @@ private AlgorithmFactory saveFactory; private AlgorithmFactory viewFactory; + private AlgorithmFactory viewWithFactory; + private DiscardListener discardListener; private SaveListener saveListener; private ViewListener viewListener; + private ViewWithListener viewWithListener; public AbstractDataManagerView(String brandPluginID) { manager = Activator.getDataManagerService(); @@ -145,6 +146,12 @@ viewListener = new ViewListener(); viewItem.addListener(SWT.Selection, viewListener); + MenuItem viewWithItem = new MenuItem(menu, SWT.PUSH); + viewWithItem.setText("View as..."); + viewWithListener = new ViewWithListener(); + viewWithItem.addListener(SWT.Selection, viewWithListener); + + MenuItem renameItem = new MenuItem(menu, SWT.PUSH); renameItem.setText("Rename"); renameItem.addListener(SWT.Selection, new Listener() { @@ -308,6 +315,8 @@ "org.cishell.reference.gui.persistence.save.Save", model, 0); viewFactory = enableMenuItemCheck(viewFactory, "org.cishell.reference.gui.persistence.view.FileView", model, 1); + viewWithFactory = enableMenuItemCheck(viewWithFactory, + "org.cishell.reference.gui.persistence.viewwith.FileViewWith", model, 2); } private AlgorithmFactory enableMenuItemCheck( @@ -318,12 +327,13 @@ 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 @@ -419,17 +429,11 @@ */ private void updateText(String newLabel, TreeItem item) { updatingTreeItem = true; - /* - if (newLabel.contains(">")) { - System.out.println("We have a >\n"); - } - */ + if (newLabel.startsWith(">")) newLabel = newLabel.substring(1); - //System.out.println("The newLabel is "+newLabel); - // This isn't being picked up - //if (isValid(newLabel)) { + editor.getItem().setText(newLabel); DataGUIItem treeItem = (DataGUIItem) item.getData(); @@ -438,27 +442,10 @@ viewer.refresh(); newEditor.dispose(); - // removed Error checking below for "invalid data model names" at Russell's request - // Felix Terkhorn May 9 2007 - /*} else { - String message = "Invalid data model name. The following characters" - + " are not allowed:\n\n" - + "`~!@#$%^&*()+=[{]}\\|;:'\",<>/?"; - Activator.getLogService().log(LogService.LOG_WARNING, message); - handleInput(); - }*/ - + updatingTreeItem = false; } - // not valid chars: `~!@#$%^&*()+=[{]}\|;:'",<>/? - private boolean isValid(String label) { - StringTokenizer st = new StringTokenizer(" " + label + " ", - "`~!@#$%^&*()+=[{]}\\|;:'\",<>/?"); - - return st.countTokens() == 1; - } - /* * Listens for right-clicks on TreeItems and opens the context menu when * needed. @@ -504,6 +491,19 @@ } } + private class ViewWithListener implements Listener { + public void handleEvent(Event event) { + if (viewWithFactory != null) { + Data data[] = AbstractDataManagerView.this.manager + .getSelectedData(); + Algorithm algorithm = viewWithFactory + .createAlgorithm(data, new Hashtable(), Activator + .getCIShellContext()); + algorithm.execute(); + } + } + } + private class DiscardListener implements Listener { public void handleEvent(Event event) { TreeItem[] selection = AbstractDataManagerView.this.tree @@ -526,36 +526,7 @@ } } - /* - * Listens for double clicks or Enter presses on a TreeItem to cause that - * item to become editable to rename it. - */ - private class TreeItemEditorListener extends MouseAdapter implements - KeyListener { - //private TreeEditor editor; - public TreeItemEditorListener(TreeEditor editor) { - //this.editor = editor; - } - - public void keyReleased(KeyEvent e) { - if ((e.keyCode == SWT.CR) && !updatingTreeItem) { - handleInput(); - } - } - - public void mouseDoubleClick(MouseEvent e) { - handleInput(); - } - - public void keyPressed(KeyEvent e) { - } - - public void mouseDown(MouseEvent e) { - } - } - - private class DataModelSelectionProvider implements ISelectionProvider { private Set listeners = new HashSet(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 547 http://cishell.svn.sourceforge.net/cishell/?rev=547&view=rev Author: huangb Date: 2007-10-05 07:17:09 -0700 (Fri, 05 Oct 2007) Log Message: ----------- Change the pop-up menu from "View as" to "View With" and make it consistent with the menu under File Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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 2007-09-26 22:15:37 UTC (rev 546) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2007-10-05 14:17:09 UTC (rev 547) @@ -161,7 +161,7 @@ viewItem.addListener(SWT.Selection, viewListener); MenuItem viewWithItem = new MenuItem(menu, SWT.PUSH); - viewWithItem.setText("View as..."); + viewWithItem.setText("View With..."); viewWithListener = new ViewWithListener(); viewWithItem.addListener(SWT.Selection, viewWithListener); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-03-05 15:51:44
|
Revision: 644 http://cishell.svn.sourceforge.net/cishell/?rev=644&view=rev Author: mwlinnem Date: 2008-03-05 07:51:41 -0800 (Wed, 05 Mar 2008) Log Message: ----------- Small refactoring. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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 2008-03-05 15:34:19 UTC (rev 643) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2008-03-05 15:51:41 UTC (rev 644) @@ -13,7 +13,6 @@ * ***************************************************************************/ package org.cishell.reference.gui.datamanager; -import java.io.IOException; import java.util.Dictionary; import java.util.HashMap; import java.util.HashSet; @@ -217,38 +216,26 @@ viewer.getControl().setFocus(); } - public void dataAdded(final Data data, String label) { - // get the data from the model needed to setup the DataModelGUIItem - Dictionary modelDictionary = data.getMetaData(); - - Data parent = (Data) modelDictionary.get(DataProperty.PARENT); - DataGUIItem parentItem; - if (parent == null) { - // if it has no parent, it is a child of the root - parentItem = rootItem; - } else { - // otherwise find the associated DataModelGUIItem for the parent - parentItem = (DataGUIItem) dataToDataGUIItemMap.get(parent); - - //The parent may not be in the GUI. If its not, then use root item - if (parentItem == null) { - parentItem = rootItem; - } - } - - // create the new DataModelGUIItem - final DataGUIItem item = new DataGUIItem(data, parentItem, + public void dataAdded(final Data newData, String label) { + + //get the new data's parent GUI Item (either root or another data item) + DataGUIItem parentItem = getParent(newData); + + // wrap the new data in a DataGUIItem + final DataGUIItem newItem = new DataGUIItem(newData, parentItem, this.brandPluginID); + // notify the parent DataModelGUIItem of its new child - parentItem.addChild(item); + parentItem.addChild(newItem); + // keep a reference to the new model in the model->TreeItem mapping so // that // it can be used in the future if it has a child - dataToDataGUIItemMap.put(data, item); + dataToDataGUIItemMap.put(newData, newItem); // update the ModelManager with the new selection final Set selection = new HashSet(); - selection.add(data); + selection.add(newData); guiRun(new Runnable() { public void run() { @@ -257,15 +244,36 @@ viewer.refresh(); // context menu may need to have options enabled/disabled // based on the new selection - updateContextMenu(data); + updateContextMenu(newData); // update the global selection - viewer.expandToLevel(item, 0); + viewer.expandToLevel(newItem, 0); manager.setSelectedData((Data[]) selection.toArray(new Data[0])); } } }); } + private DataGUIItem getParent(Data data) { + Dictionary modelDictionary = data.getMetaData(); + + Data parent = (Data) modelDictionary.get(DataProperty.PARENT); + DataGUIItem parentItem; + if (parent == null) { + // if it has no parent, it is a child of the root + parentItem = rootItem; + } else { + // otherwise find the associated DataModelGUIItem for the parent + parentItem = (DataGUIItem) dataToDataGUIItemMap.get(parent); + + //The parent may not be in the GUI. If its not, then use root item + if (parentItem == null) { + parentItem = rootItem; + } + } + + return parentItem; + } + private void guiRun(Runnable run) { if (Thread.currentThread() == Display.getDefault().getThread()) { run.run(); @@ -454,7 +462,6 @@ model.getMetaData().put(DataProperty.LABEL, newLabel); viewer.refresh(); newEditor.dispose(); - updatingTreeItem = false; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
Revision: 702 http://cishell.svn.sourceforge.net/cishell/?rev=702&view=rev Author: huangb Date: 2008-03-25 09:24:52 -0700 (Tue, 25 Mar 2008) Log Message: ----------- replace getMetaData with getMetadata catch and log AlgorithmExecutionException when invoke view or save function by right clicking the selected data. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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 2008-03-25 16:23:43 UTC (rev 701) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2008-03-25 16:24:52 UTC (rev 702) @@ -25,6 +25,7 @@ import org.cishell.app.service.datamanager.DataManagerService; import org.cishell.framework.algorithm.Algorithm; import org.cishell.framework.algorithm.AlgorithmFactory; +import org.cishell.framework.algorithm.AlgorithmExecutionException; import org.cishell.framework.data.Data; import org.cishell.framework.data.DataProperty; import org.cishell.reference.gui.workspace.CIShellApplication; @@ -105,17 +106,20 @@ private SaveListener saveListener; private ViewListener viewListener; private ViewWithListener viewWithListener; + private LogService log; public AbstractDataManagerView(String brandPluginID) { - manager = Activator.getDataManagerService(); + this.brandPluginID = brandPluginID; dataToDataGUIItemMap = new HashMap(); - - if (manager == null) { - LogService log = Activator.getLogService(); + + manager = Activator.getDataManagerService(); + log = Activator.getLogService(); + + if (manager == null) { if (log != null) { log.log(LogService.LOG_ERROR, "Data Manager Service unavailable!"); - } + } } } @@ -254,7 +258,7 @@ } private DataGUIItem getParent(Data data) { - Dictionary modelDictionary = data.getMetaData(); + Dictionary modelDictionary = data.getMetadata(); Data parent = (Data) modelDictionary.get(DataProperty.PARENT); DataGUIItem parentItem; @@ -459,7 +463,7 @@ DataGUIItem treeItem = (DataGUIItem) item.getData(); Data model = treeItem.getModel(); - model.getMetaData().put(DataProperty.LABEL, newLabel); + model.getMetadata().put(DataProperty.LABEL, newLabel); viewer.refresh(); newEditor.dispose(); @@ -493,7 +497,21 @@ Algorithm algorithm = saveFactory .createAlgorithm(data, new Hashtable(), Activator .getCIShellContext()); - algorithm.execute(); + try{ + algorithm.execute(); + }catch (AlgorithmExecutionException aee) { + if (log != null) { + log.log(LogService.LOG_ERROR, + "org.cishell.framework.algorithm.AlgorithmExecutionException", + aee); + } + else { + log = Activator.getLogService(); + log.log(LogService.LOG_ERROR, + "org.cishell.framework.algorithm.AlgorithmExecutionException", + aee); + } + } } } } @@ -506,7 +524,21 @@ Algorithm algorithm = viewFactory .createAlgorithm(data, new Hashtable(), Activator .getCIShellContext()); - algorithm.execute(); + try { + algorithm.execute(); + }catch (AlgorithmExecutionException aee) { + if (log != null) { + log.log(LogService.LOG_ERROR, + "org.cishell.framework.algorithm.AlgorithmExecutionException", + aee); + } + else { + log = Activator.getLogService(); + log.log(LogService.LOG_ERROR, + "org.cishell.framework.algorithm.AlgorithmExecutionException", + aee); + } + } } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-07-08 17:45:43
|
Revision: 780 http://cishell.svn.sourceforge.net/cishell/?rev=780&view=rev Author: mwlinnem Date: 2008-07-08 10:44:42 -0700 (Tue, 08 Jul 2008) Log Message: ----------- Testing CiShell commit. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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 2008-06-11 15:41:49 UTC (rev 779) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2008-07-08 17:44:42 UTC (rev 780) @@ -109,7 +109,6 @@ private LogService log; public AbstractDataManagerView(String brandPluginID) { - this.brandPluginID = brandPluginID; dataToDataGUIItemMap = new HashMap(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-07-08 17:49:59
|
Revision: 781 http://cishell.svn.sourceforge.net/cishell/?rev=781&view=rev Author: mwlinnem Date: 2008-07-08 10:47:55 -0700 (Tue, 08 Jul 2008) Log Message: ----------- test. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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 2008-07-08 17:44:42 UTC (rev 780) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2008-07-08 17:47:55 UTC (rev 781) @@ -109,6 +109,7 @@ private LogService log; public AbstractDataManagerView(String brandPluginID) { + this.brandPluginID = brandPluginID; dataToDataGUIItemMap = new HashMap(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-07-08 17:51:51
|
Revision: 782 http://cishell.svn.sourceforge.net/cishell/?rev=782&view=rev Author: mwlinnem Date: 2008-07-08 10:50:51 -0700 (Tue, 08 Jul 2008) Log Message: ----------- More testing. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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 2008-07-08 17:47:55 UTC (rev 781) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2008-07-08 17:50:51 UTC (rev 782) @@ -109,7 +109,6 @@ private LogService log; public AbstractDataManagerView(String brandPluginID) { - this.brandPluginID = brandPluginID; dataToDataGUIItemMap = new HashMap(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <mwl...@us...> - 2008-07-08 17:56:09
|
Revision: 783 http://cishell.svn.sourceforge.net/cishell/?rev=783&view=rev Author: mwlinnem Date: 2008-07-08 10:55:50 -0700 (Tue, 08 Jul 2008) Log Message: ----------- Testing. Modified Paths: -------------- trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.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 2008-07-08 17:50:51 UTC (rev 782) +++ trunk/clients/gui/org.cishell.reference.gui.datamanager/src/org/cishell/reference/gui/datamanager/AbstractDataManagerView.java 2008-07-08 17:55:50 UTC (rev 783) @@ -109,6 +109,8 @@ private LogService log; public AbstractDataManagerView(String brandPluginID) { + + this.brandPluginID = brandPluginID; dataToDataGUIItemMap = new HashMap(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |