svn commit: r17369 - trunk/src/argouml-app/src/org/argouml: Images ui/explorer
Thomas Neustupny <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: thn
Date: 2009-10-03 14:50:08-0700
New Revision: 17369
Added:
trunk/src/argouml-app/src/org/argouml/Images/uml2explorerbg.png (contents, props changed)
Modified:
trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerTree.java
Log:
adding visual warning in explorer pane for UML2 mode
Added: trunk/src/argouml-app/src/org/argouml/Images/uml2explorerbg.png
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/Images/uml2explorerbg.png?view=markup&pathrev=17369
==============================================================================
Binary file. No diff available.
Modified: trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerTree.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerTree.java?view=diff&pathrev=17369&r1=17368&r2=17369
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerTree.java (original)
+++ trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerTree.java 2009-10-03 14:50:08-0700
@@ -24,6 +24,8 @@
package org.argouml.ui.explorer;
+import java.awt.Graphics;
+import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
@@ -44,9 +46,11 @@
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
+import org.argouml.application.helpers.ResourceLoaderWrapper;
import org.argouml.kernel.Project;
import org.argouml.kernel.ProjectManager;
import org.argouml.kernel.ProjectSettings;
+import org.argouml.model.Model;
import org.argouml.ui.DisplayTextTree;
import org.argouml.ui.ProjectActions;
import org.argouml.ui.targetmanager.TargetEvent;
@@ -55,17 +59,23 @@
import org.tigris.gef.presentation.Fig;
/**
- * This class is the JTree for the explorer. It provides:<p>
+ * This class is the JTree for the explorer. It provides:
+ * <p>
+ *
* <pre>
* - selection/target management
- * - mouse listener for the pop up </pre>
- *
- * @author alexb
+ * - mouse listener for the pop up
+ * </pre>
+ *
+ * @author alexb
* @since 0.15.2
*/
-public class ExplorerTree
- extends DisplayTextTree {
+public class ExplorerTree extends DisplayTextTree {
+ /**
+ * Background image only displayed in UML2 mode
+ */
+ private Image bgImage = null;
/**
* Prevents target event cycles between this and the TargetManager.
@@ -73,8 +83,8 @@
private boolean updatingSelection;
/**
- * Prevents target event cycles between this and the TargetManager
- * for tree selection events.
+ * Prevents target event cycles between this and the TargetManager for tree
+ * selection events.
*/
private boolean updatingSelectionViaTreeSelection;
@@ -83,9 +93,13 @@
*/
public ExplorerTree() {
super();
-
+
Project p = ProjectManager.getManager().getCurrentProject();
this.setModel(new ExplorerTreeModel(p, this));
+ if (Model.getFacade().getUmlVersion().charAt(0) == '2') {
+ bgImage = ResourceLoaderWrapper.lookupIconResource(
+ "uml2explorerbg").getImage();
+ }
ProjectSettings ps = p.getProjectSettings();
setShowStereotype(ps.getShowStereotypesValue());
@@ -95,13 +109,13 @@
this.addTreeWillExpandListener(new ExplorerTreeWillExpandListener());
this.addTreeExpansionListener(new ExplorerTreeExpansionListener());
- TargetManager.getInstance()
- .addTargetListener(new ExplorerTargetListener());
+ TargetManager.getInstance().addTargetListener(
+ new ExplorerTargetListener());
}
/**
- * Listens to mouse events coming from the *JTree*,
- * on right click, brings up the pop-up menu.
+ * Listens to mouse events coming from the *JTree*, on right click, brings
+ * up the pop-up menu.
*/
class ExplorerMouseListener extends MouseAdapter {
@@ -109,6 +123,7 @@
/**
* The constructor.
+ *
* @param newtree
*/
public ExplorerMouseListener(JTree newtree) {
@@ -119,8 +134,7 @@
/**
* Brings up the pop-up menu.
*
- * @see java.awt.event.MouseListener#mousePressed(
- * java.awt.event.MouseEvent)
+ * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
*/
@Override
public void mousePressed(MouseEvent me) {
@@ -137,8 +151,7 @@
* releasing the right mouse button while the cursor is over a component
* that is popup-enabled.
*
- * @see java.awt.event.MouseListener#mouseReleased(
- * java.awt.event.MouseEvent)
+ * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
*/
@Override
public void mouseReleased(MouseEvent me) {
@@ -151,8 +164,7 @@
/**
* Brings up the pop-up menu.
*
- * @see java.awt.event.MouseListener#mouseClicked(
- * java.awt.event.MouseEvent)
+ * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
*/
@Override
public void mouseClicked(MouseEvent me) {
@@ -166,8 +178,7 @@
}
/**
- * Double-clicking on an item attempts
- * to show the item in a diagram.
+ * Double-clicking on an item attempts to show the item in a diagram.
*/
private void myDoubleClick() {
Object target = TargetManager.getInstance().getTarget();
@@ -180,7 +191,7 @@
/**
* Builds a pop-up menu for extra functionality for the Tree.
- *
+ *
* @param me The mouse event.
*/
public void showPopupMenu(MouseEvent me) {
@@ -191,17 +202,16 @@
}
/*
- * We preserve the current (multiple) selection,
- * if we are over part of it ...
+ * We preserve the current (multiple) selection, if we are over part
+ * of it ...
*/
if (!isPathSelected(path)) {
/* ... otherwise we select the item below the mousepointer. */
getSelectionModel().setSelectionPath(path);
}
- Object selectedItem =
- ((DefaultMutableTreeNode) path.getLastPathComponent())
- .getUserObject();
+ Object selectedItem = ((DefaultMutableTreeNode) path
+ .getLastPathComponent()).getUserObject();
JPopupMenu popup = new ExplorerPopup(selectedItem, me);
if (popup.getComponentCount() > 0) {
@@ -211,24 +221,27 @@
} /* end class ExplorerMouseListener */
-
/**
* Helps prepare state before a node is expanded.
*/
class ExplorerTreeWillExpandListener implements TreeWillExpandListener {
/*
- * @see javax.swing.event.TreeWillExpandListener#treeWillCollapse(javax.swing.event.TreeExpansionEvent)
+ * @see
+ * javax.swing.event.TreeWillExpandListener#treeWillCollapse(javax.swing
+ * .event.TreeExpansionEvent)
*/
public void treeWillCollapse(TreeExpansionEvent tee) {
// unimplemented - we only care about expanding
- }
+ }
/*
- * Updates stereotype setting,
- * adds all children per treemodel 'build on demand' design.
- *
- * @see javax.swing.event.TreeWillExpandListener#treeWillExpand(javax.swing.event.TreeExpansionEvent)
+ * Updates stereotype setting, adds all children per treemodel 'build on
+ * demand' design.
+ *
+ * @see
+ * javax.swing.event.TreeWillExpandListener#treeWillExpand(javax.swing
+ * .event.TreeExpansionEvent)
*/
public void treeWillExpand(TreeExpansionEvent tee) {
// TODO: This should not need to know about ProjectSettings - tfm
@@ -250,7 +263,7 @@
/*
* @see javax.swing.event.TreeExpansionListener#treeCollapsed(
- * javax.swing.event.TreeExpansionEvent)
+ * javax.swing.event.TreeExpansionEvent)
*/
public void treeCollapsed(TreeExpansionEvent event) {
// does nothing.
@@ -258,8 +271,7 @@
/*
* @see javax.swing.event.TreeExpansionListener#treeExpanded(
- * javax.swing.event.TreeExpansionEvent)
- * Updates the selection state.
+ * javax.swing.event.TreeExpansionEvent) Updates the selection state.
*/
public void treeExpanded(TreeExpansionEvent event) {
@@ -269,8 +281,8 @@
}
/**
- * Refresh the selection of the tree nodes.
- * This does not cause new events to be fired to the TargetManager.
+ * Refresh the selection of the tree nodes. This does not cause new events
+ * to be fired to the TargetManager.
*/
public void refreshSelection() {
Collection targets = TargetManager.getInstance().getTargets();
@@ -281,7 +293,7 @@
/**
* Sets the selection state for a given set of targets.
- *
+ *
* @param targets the targets
*/
private void setSelection(Object[] targets) {
@@ -292,8 +304,6 @@
updatingSelectionViaTreeSelection = false;
}
-
-
private void addTargetsInternal(Object[] addedTargets) {
if (addedTargets.length < 1) {
return;
@@ -310,10 +320,10 @@
}
// TODO: This doesn't perform well enough with large models to have
- // it enabled by default. If the performance can't be improved,
+ // it enabled by default. If the performance can't be improved,
// perhaps we can introduce a manual "find in explorer tree" action.
-// selectAll(targets);
-
+ // selectAll(targets);
+
int[] selectedRows = getSelectionRows();
if (selectedRows != null && selectedRows.length > 0) {
// TODO: This only works if the item is visible
@@ -329,25 +339,23 @@
*/
private void selectVisible(Object target) {
for (int j = 0; j < getRowCount(); j++) {
- Object rowItem =
- ((DefaultMutableTreeNode) getPathForRow(j)
- .getLastPathComponent()).getUserObject();
+ Object rowItem = ((DefaultMutableTreeNode) getPathForRow(j)
+ .getLastPathComponent()).getUserObject();
if (rowItem == target) {
addSelectionRow(j);
}
}
}
-
/**
* Search the entire tree and select all instances of targets found.
*/
private void selectAll(Set targets) {
ExplorerTreeModel model = (ExplorerTreeModel) getModel();
- ExplorerTreeNode root = (ExplorerTreeNode) model.getRoot();
+ ExplorerTreeNode root = (ExplorerTreeNode) model.getRoot();
selectChildren(model, root, targets);
}
-
+
/*
* Perform recursive search of subtree rooted at 'node', selecting all nodes
* which have a userObject matching one of our targets.
@@ -363,11 +371,11 @@
for (Object t : targets) {
if (t == nodeObject) {
addSelectionPath(new TreePath(node.getPath()));
- // target may appear multiple places in the tree, so
+ // target may appear multiple places in the tree, so
// we don't stop here (but it's expensive to search
// the whole tree) - tfm - 20070904
-// targets.remove(t);
-// break;
+ // targets.remove(t);
+ // break;
}
}
}
@@ -379,19 +387,24 @@
}
}
-
+ public void paint(Graphics g) {
+ super.paint(g);
+ if (bgImage != null) {
+ g.drawImage(bgImage, 0, 40, null);
+ }
+ }
/**
- * Manages selecting the item to show in Argo's other
- * views based on the highlighted row.
+ * Manages selecting the item to show in Argo's other views based on the
+ * highlighted row.
*/
class ExplorerTreeSelectionListener implements TreeSelectionListener {
/**
- * @see javax.swing.event.TreeSelectionListener#valueChanged(
- * javax.swing.event.TreeSelectionEvent)
- *
- * Change in explorer tree selection -> set target in target manager.
+ * @see javax.swing.event.TreeSelectionListener#valueChanged(javax.swing.event.TreeSelectionEvent)
+ *
+ * Change in explorer tree selection -> set target in target
+ * manager.
*/
public void valueChanged(TreeSelectionEvent e) {
@@ -402,23 +415,18 @@
TreePath[] addedOrRemovedPaths = e.getPaths();
TreePath[] selectedPaths = getSelectionPaths();
List elementsAsList = new ArrayList();
- for (int i = 0;
- selectedPaths != null && i < selectedPaths.length; i++) {
- Object element =
- ((DefaultMutableTreeNode)
- selectedPaths[i].getLastPathComponent())
- .getUserObject();
+ for (int i = 0; selectedPaths != null
+ && i < selectedPaths.length; i++) {
+ Object element = ((DefaultMutableTreeNode) selectedPaths[i]
+ .getLastPathComponent()).getUserObject();
elementsAsList.add(element);
// scan the visible rows for duplicates of
// this elem and select them
int rows = getRowCount();
for (int row = 0; row < rows; row++) {
- Object rowItem =
- ((DefaultMutableTreeNode) getPathForRow(row)
- .getLastPathComponent())
- .getUserObject();
- if (rowItem == element
- && !(isRowSelected(row))) {
+ Object rowItem = ((DefaultMutableTreeNode) getPathForRow(
+ row).getLastPathComponent()).getUserObject();
+ if (rowItem == element && !(isRowSelected(row))) {
addSelectionRow(row);
}
}
@@ -428,10 +436,8 @@
boolean callSetTarget = true;
List addedElements = new ArrayList();
for (int i = 0; i < addedOrRemovedPaths.length; i++) {
- Object element =
- ((DefaultMutableTreeNode)
- addedOrRemovedPaths[i].getLastPathComponent())
- .getUserObject();
+ Object element = ((DefaultMutableTreeNode) addedOrRemovedPaths[i]
+ .getLastPathComponent()).getUserObject();
if (!e.isAddedPath(i)) {
callSetTarget = false;
break;
@@ -439,8 +445,8 @@
addedElements.add(element);
}
- if (callSetTarget && addedElements.size()
- == elementsAsList.size()
+ if (callSetTarget
+ && addedElements.size() == elementsAsList.size()
&& elementsAsList.containsAll(addedElements)) {
TargetManager.getInstance().setTargets(elementsAsList);
} else {
@@ -449,11 +455,8 @@
List removedTargets = new ArrayList();
List addedTargets = new ArrayList();
for (int i = 0; i < addedOrRemovedPaths.length; i++) {
- Object element =
- ((DefaultMutableTreeNode)
- addedOrRemovedPaths[i]
- .getLastPathComponent())
- .getUserObject();
+ Object element = ((DefaultMutableTreeNode) addedOrRemovedPaths[i]
+ .getLastPathComponent()).getUserObject();
if (e.isAddedPath(i)) {
addedTargets.add(element);
} else {
@@ -485,7 +488,7 @@
/**
* Actions a change in targets received from the TargetManager.
- *
+ *
* @param targets the targets
*/
private void setTargets(Object[] targets) {
@@ -503,13 +506,13 @@
/*
* @see org.argouml.ui.targetmanager.TargetListener#targetAdded(
- * org.argouml.ui.targetmanager.TargetEvent)
+ * org.argouml.ui.targetmanager.TargetEvent)
*/
public void targetAdded(TargetEvent e) {
if (!updatingSelection) {
updatingSelection = true;
Object[] targets = e.getAddedTargets();
-
+
updatingSelectionViaTreeSelection = true;
addTargetsInternal(targets);
updatingSelectionViaTreeSelection = false;
@@ -518,10 +521,9 @@
// setTargets(e.getNewTargets());
}
-
/*
* @see org.argouml.ui.targetmanager.TargetListener#targetRemoved(
- * org.argouml.ui.targetmanager.TargetEvent)
+ * org.argouml.ui.targetmanager.TargetEvent)
*/
public void targetRemoved(TargetEvent e) {
if (!updatingSelection) {
@@ -536,10 +538,8 @@
target = ((Fig) target).getOwner();
}
for (int j = 0; j < rows; j++) {
- Object rowItem =
- ((DefaultMutableTreeNode)
- getPathForRow(j).getLastPathComponent())
- .getUserObject();
+ Object rowItem = ((DefaultMutableTreeNode) getPathForRow(
+ j).getLastPathComponent()).getUserObject();
if (rowItem == target) {
updatingSelectionViaTreeSelection = true;
removeSelectionRow(j);
@@ -558,7 +558,7 @@
/*
* @see org.argouml.ui.targetmanager.TargetListener#targetSet(
- * org.argouml.ui.targetmanager.TargetEvent)
+ * org.argouml.ui.targetmanager.TargetEvent)
*/
public void targetSet(TargetEvent e) {
setTargets(e.getNewTargets());
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2403274
To unsubscribe from this discussion, e-mail: [[email protected]].