Author: hudsonb
Date: 2008-07-08 11:50:40-0700
New Revision: 15210
Added:
branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoProjectEvent.java
branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoProjectEventListener.java
Modified:
branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventPump.java
branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventTypes.java
branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/kernel/ProjectImpl.java
Log:
Added events for the addition/removal of diagrams from a project
Modified: branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventPump.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventPump.java?view=diff&rev=15210&p1=branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventPump.java&p2=branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventPump.java&r1=15209&r2=15210
==============================================================================
--- branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventPump.java (original)
+++ branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventPump.java 2008-07-08 11:50:40-0700
@@ -31,8 +31,8 @@
import org.argouml.application.api.ArgoEventListener;
/**
- * ArgoEventPump is an eventhandler which handles events regarding
- * the loading and unloading of modules.
+ * ArgoEventPump is an eventhandler which handles events regarding the loading
+ * and unloading of modules.
*/
public final class ArgoEventPump {
/**
@@ -42,7 +42,7 @@
/**
* <code>listeners</code> contains the list of register listeners.
- *
+ *
* It is a list of {@link Pair}.
*/
private List<Pair> listeners;
@@ -110,10 +110,10 @@
/**
* Removes a listener, eventtype pair from the listener list.
- *
- * TODO: replace the listener implementation with a EventListenerList
- * for better performance
- *
+ *
+ * TODO: replace the listener implementation with a EventListenerList for
+ * better performance
+ *
* @param event the event to which the listener will not listen any more
* @param listener the listener to be removed
*/
@@ -144,54 +144,53 @@
/**
* Handle firing a notation event.
- *
+ *
* @param event The event to be fired.
* @param listener The listener.
*/
- private void handleFireNotationEvent(
- ArgoNotationEvent event,
- ArgoNotationEventListener listener) {
+ private void handleFireNotationEvent(ArgoNotationEvent event,
+ ArgoNotationEventListener listener) {
switch (event.getEventType()) {
- case ArgoEventTypes.NOTATION_CHANGED :
- listener.notationChanged(event);
- break;
-
- case ArgoEventTypes.NOTATION_ADDED :
- listener.notationAdded(event);
- break;
-
- case ArgoEventTypes.NOTATION_REMOVED :
- listener.notationRemoved(event);
- break;
-
- case ArgoEventTypes.NOTATION_PROVIDER_ADDED :
- listener.notationProviderAdded(event);
- break;
-
- case ArgoEventTypes.NOTATION_PROVIDER_REMOVED :
- listener.notationProviderRemoved(event);
- break;
-
- default :
- LOG.error("Invalid event:" + event.getEventType());
- break;
+ case ArgoEventTypes.NOTATION_CHANGED:
+ listener.notationChanged(event);
+ break;
+
+ case ArgoEventTypes.NOTATION_ADDED:
+ listener.notationAdded(event);
+ break;
+
+ case ArgoEventTypes.NOTATION_REMOVED:
+ listener.notationRemoved(event);
+ break;
+
+ case ArgoEventTypes.NOTATION_PROVIDER_ADDED:
+ listener.notationProviderAdded(event);
+ break;
+
+ case ArgoEventTypes.NOTATION_PROVIDER_REMOVED:
+ listener.notationProviderRemoved(event);
+ break;
+
+ default:
+ LOG.error("Invalid event:" + event.getEventType());
+ break;
}
}
/**
* Handle firing a diagram appearance event.
- *
+ *
* @param event The event to be fired.
* @param listener The listener.
*/
private void handleFireDiagramAppearanceEvent(
- ArgoDiagramAppearanceEvent event,
- ArgoDiagramAppearanceEventListener listener) {
+ ArgoDiagramAppearanceEvent event,
+ ArgoDiagramAppearanceEventListener listener) {
switch (event.getEventType()) {
- case ArgoEventTypes.DIAGRAM_FONT_CHANGED :
+ case ArgoEventTypes.DIAGRAM_FONT_CHANGED:
listener.diagramFontChanged(event);
break;
- default :
+ default:
LOG.error("Invalid event:" + event.getEventType());
break;
}
@@ -199,60 +198,57 @@
/**
* Handle firing a help text event.
- *
+ *
* @param event The event to be fired.
* @param listener The listener.
*/
- private void handleFireHelpEvent(
- ArgoHelpEvent event,
- ArgoHelpEventListener listener) {
+ private void handleFireHelpEvent(ArgoHelpEvent event,
+ ArgoHelpEventListener listener) {
switch (event.getEventType()) {
- case ArgoEventTypes.HELP_CHANGED :
+ case ArgoEventTypes.HELP_CHANGED:
listener.helpChanged(event);
break;
- case ArgoEventTypes.HELP_REMOVED :
+ case ArgoEventTypes.HELP_REMOVED:
listener.helpRemoved(event);
break;
- default :
+ default:
LOG.error("Invalid event:" + event.getEventType());
break;
}
}
-
/**
* Handle firing a status text event.
- *
+ *
* @param event The event to be fired.
* @param listener The listener.
*/
- private void handleFireStatusEvent(
- ArgoStatusEvent event,
- ArgoStatusEventListener listener) {
+ private void handleFireStatusEvent(ArgoStatusEvent event,
+ ArgoStatusEventListener listener) {
switch (event.getEventType()) {
- case ArgoEventTypes.STATUS_TEXT :
+ case ArgoEventTypes.STATUS_TEXT:
listener.statusText(event);
break;
- case ArgoEventTypes.STATUS_CLEARED :
+ case ArgoEventTypes.STATUS_CLEARED:
listener.statusCleared(event);
break;
- case ArgoEventTypes.STATUS_PROJECT_SAVED :
+ case ArgoEventTypes.STATUS_PROJECT_SAVED:
listener.projectSaved(event);
break;
- case ArgoEventTypes.STATUS_PROJECT_LOADED :
+ case ArgoEventTypes.STATUS_PROJECT_LOADED:
listener.projectLoaded(event);
break;
- case ArgoEventTypes.STATUS_PROJECT_MODIFIED :
+ case ArgoEventTypes.STATUS_PROJECT_MODIFIED:
listener.projectModified(event);
break;
-
- default :
+
+ default:
LOG.error("Invalid event:" + event.getEventType());
break;
}
@@ -260,13 +256,12 @@
/**
* Handle firing a profile event.
- *
+ *
* @param event The event to be fired.
* @param listener The listener.
*/
- private void handleFireProfileEvent(
- ArgoProfileEvent event,
- ArgoProfileEventListener listener) {
+ private void handleFireProfileEvent(ArgoProfileEvent event,
+ ArgoProfileEventListener listener) {
switch (event.getEventType()) {
case ArgoEventTypes.PROFILE_ADDED:
listener.profileAdded(event);
@@ -284,13 +279,12 @@
/**
* Handle firing a generator event.
- *
+ *
* @param event The event to be fired.
* @param listener The listener.
*/
- private void handleFireGeneratorEvent(
- ArgoGeneratorEvent event,
- ArgoGeneratorEventListener listener) {
+ private void handleFireGeneratorEvent(ArgoGeneratorEvent event,
+ ArgoGeneratorEventListener listener) {
switch (event.getEventType()) {
case ArgoEventTypes.GENERATOR_CHANGED:
listener.generatorChanged(event);
@@ -314,11 +308,11 @@
if (event.getEventType() == ArgoEventTypes.ANY_EVENT) {
if (listener instanceof ArgoNotationEventListener) {
handleFireNotationEvent((ArgoNotationEvent) event,
- (ArgoNotationEventListener) listener);
+ (ArgoNotationEventListener) listener);
}
if (listener instanceof ArgoHelpEventListener) {
handleFireHelpEvent((ArgoHelpEvent) event,
- (ArgoHelpEventListener) listener);
+ (ArgoHelpEventListener) listener);
}
if (listener instanceof ArgoStatusEventListener) {
handleFireStatusEvent((ArgoStatusEvent) event,
@@ -326,56 +320,76 @@
}
} else {
if (event.getEventType() >= ArgoEventTypes.ANY_NOTATION_EVENT
- && event.getEventType() < ArgoEventTypes.LAST_NOTATION_EVENT) {
+ && event.getEventType() < ArgoEventTypes.LAST_NOTATION_EVENT) {
if (listener instanceof ArgoNotationEventListener) {
handleFireNotationEvent((ArgoNotationEvent) event,
- (ArgoNotationEventListener) listener);
+ (ArgoNotationEventListener) listener);
}
- }
- if (event.getEventType() >= ArgoEventTypes
- .ANY_DIAGRAM_APPEARANCE_EVENT
- && event.getEventType() < ArgoEventTypes
- .LAST_DIAGRAM_APPEARANCE_EVENT) {
+ } else if (event.getEventType() >= ArgoEventTypes.ANY_DIAGRAM_APPEARANCE_EVENT
+ && event.getEventType() < ArgoEventTypes.LAST_DIAGRAM_APPEARANCE_EVENT) {
if (listener instanceof ArgoDiagramAppearanceEventListener) {
handleFireDiagramAppearanceEvent(
(ArgoDiagramAppearanceEvent) event,
(ArgoDiagramAppearanceEventListener) listener);
}
- }
- if (event.getEventType() >= ArgoEventTypes.ANY_HELP_EVENT
+ } else if (event.getEventType() >= ArgoEventTypes.ANY_HELP_EVENT
&& event.getEventType() < ArgoEventTypes.LAST_HELP_EVENT) {
if (listener instanceof ArgoHelpEventListener) {
handleFireHelpEvent((ArgoHelpEvent) event,
(ArgoHelpEventListener) listener);
}
- }
- if (event.getEventType() >= ArgoEventTypes.ANY_GENERATOR_EVENT
- && event.getEventType() < ArgoEventTypes.LAST_GENERATOR_EVENT) {
+ } else if (event.getEventType() >= ArgoEventTypes.ANY_GENERATOR_EVENT
+ && event.getEventType() < ArgoEventTypes.LAST_GENERATOR_EVENT) {
if (listener instanceof ArgoGeneratorEventListener) {
handleFireGeneratorEvent((ArgoGeneratorEvent) event,
(ArgoGeneratorEventListener) listener);
}
- }
- if (event.getEventType() >= ArgoEventTypes.ANY_STATUS_EVENT
- && event.getEventType() < ArgoEventTypes
- .LAST_STATUS_EVENT) {
+ } else if (event.getEventType() >= ArgoEventTypes.ANY_STATUS_EVENT
+ && event.getEventType() < ArgoEventTypes.LAST_STATUS_EVENT) {
if (listener instanceof ArgoStatusEventListener) {
handleFireStatusEvent((ArgoStatusEvent) event,
(ArgoStatusEventListener) listener);
}
- }
- if (event.getEventType() >= ArgoEventTypes.ANY_PROFILE_EVENT
- && event.getEventType() < ArgoEventTypes
- .LAST_PROFILE_EVENT) {
+ } else if (event.getEventType() >= ArgoEventTypes.ANY_PROFILE_EVENT
+ && event.getEventType() < ArgoEventTypes.LAST_PROFILE_EVENT) {
if (listener instanceof ArgoProfileEventListener) {
handleFireProfileEvent((ArgoProfileEvent) event,
(ArgoProfileEventListener) listener);
}
+ } else if (event.getEventType() >= ArgoEventTypes.ANY_PROJECT_EVENT
+ && event.getEventType() < ArgoEventTypes.LAST_PROJECT_EVENT) {
+ if (listener instanceof ArgoProjectEventListener) {
+ handleFireProjectEvent((ArgoProjectEvent) event,
+ (ArgoProjectEventListener) listener);
+ }
}
}
}
/**
+ * Handle firing a project event.
+ *
+ * @param event The event to be fired.
+ * @param listener The listener.
+ */
+ private void handleFireProjectEvent(ArgoProjectEvent event,
+ ArgoProjectEventListener listener) {
+ switch (event.getEventType()) {
+ case ArgoEventTypes.PROJECT_DIAGRAM_ADDED_EVENT:
+ listener.diagramAdded(event);
+ break;
+
+ case ArgoEventTypes.PROJECT_DIAGRAM_REMOVED_EVENT:
+ listener.diagramRemoved(event);
+ break;
+
+ default:
+ LOG.error("Invalid event:" + event.getEventType());
+ break;
+ }
+ }
+
+ /**
* @param event the event to be fired
*/
public static void fireEvent(ArgoEvent event) {
@@ -414,11 +428,12 @@
*/
static class Pair {
private int eventType;
+
private ArgoEventListener listener;
/**
* Constructor.
- *
+ *
* @param myEventType The event type.
* @param myListener The listener.
*/
@@ -441,13 +456,11 @@
return listener;
}
-
@Override
public String toString() {
return "{Pair(" + eventType + "," + listener + ")}";
}
-
@Override
public int hashCode() {
if (listener != null) {
@@ -456,7 +469,6 @@
return eventType;
}
-
@Override
public boolean equals(Object o) {
if (o instanceof Pair) {
Modified: branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventTypes.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventTypes.java?view=diff&rev=15210&p1=branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventTypes.java&p2=branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventTypes.java&r1=15209&r2=15210
==============================================================================
--- branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventTypes.java (original)
+++ branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoEventTypes.java 2008-07-08 11:50:40-0700
@@ -220,6 +220,26 @@
* Last profile event.
*/
int LAST_PROFILE_EVENT = 1799;
+
+ /***
+ * Indicating an Project event.
+ */
+ int ANY_PROJECT_EVENT = 1800;
+
+ /**
+ * Indicating that a diagram has been added.
+ */
+ int PROJECT_DIAGRAM_ADDED_EVENT = 1801;
+
+ /**
+ * Indicating that a diagram has been removed.
+ */
+ int PROJECT_DIAGRAM_REMOVED_EVENT = 1802;
+
+ /**
+ * Last project event.
+ */
+ int LAST_PROJECT_EVENT = 1899;
/**
* Id marker for the last Argo event.
Added: branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoProjectEvent.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoProjectEvent.java?view=auto&rev=15210
==============================================================================
--- (empty file)
+++ branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoProjectEvent.java 2008-07-08 11:50:40-0700
@@ -0,0 +1,64 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2008 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.application.events;
+
+import org.argouml.uml.diagram.ArgoDiagram;
+
+/**
+ * The Project Event is used to notify interested parties when diagrams have
+ * been added to a Project.
+ *
+ * @author Brian Hudson
+ */
+public class ArgoProjectEvent extends ArgoEvent {
+ private ArgoDiagram diagram;
+
+ /**
+ * Creates a new ArgoProjectEvent
+ *
+ * @param et Event type
+ * @param src Event source
+ * @param diagram The diagram that was added/removed
+ */
+ public ArgoProjectEvent(int et, Object src, ArgoDiagram diagram) {
+ super(et, src);
+
+ this.diagram = diagram;
+ }
+
+ @Override
+ public int getEventStartRange() {
+ return ArgoEventTypes.ANY_PROJECT_EVENT;
+ }
+
+ /**
+ * Returns the diagram associated with this event
+ *
+ * @return The diagram associated with this event
+ */
+ public ArgoDiagram getDiagram() {
+ return diagram;
+ }
+}
Added: branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoProjectEventListener.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoProjectEventListener.java?view=auto&rev=15210
==============================================================================
--- (empty file)
+++ branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/application/events/ArgoProjectEventListener.java 2008-07-08 11:50:40-0700
@@ -0,0 +1,48 @@
+// $Id: eclipse-argo-codetemplates.xml 11347 2006-10-26 22:37:44Z linus $
+// Copyright (c) 2008 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies. This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason. IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.application.events;
+
+import org.argouml.application.api.ArgoEventListener;
+
+/**
+ * An interface that objects that are interested in Project events must extend.
+ *
+ * @author Brian Hudson
+ */
+public interface ArgoProjectEventListener extends ArgoEventListener {
+ /**
+ * Invoked when a new diagram has been added to a project
+ *
+ * @param e <code>ArgoProjectEvent</code> describing the change
+ */
+ void diagramAdded(ArgoProjectEvent e);
+
+ /**
+ * Invoked when a diagram has been removed from a project
+ *
+ * @param e <code>ArgoProjectEvent</code> describing the change
+ */
+ void diagramRemoved(ArgoProjectEvent e);
+}
Modified: branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/kernel/ProjectImpl.java
Url: http://argouml.tigris.org/source/browse/argouml/branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/kernel/ProjectImpl.java?view=diff&rev=15210&p1=branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/kernel/ProjectImpl.java&p2=branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/kernel/ProjectImpl.java&r1=15209&r2=15210
==============================================================================
--- branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/kernel/ProjectImpl.java (original)
+++ branches/gsoc2008/work_argoeclipse1_hudsonb/argouml-app/src/org/argouml/kernel/ProjectImpl.java 2008-07-08 11:50:40-0700
@@ -43,6 +43,9 @@
import org.apache.log4j.Logger;
import org.argouml.application.api.Argo;
+import org.argouml.application.events.ArgoEventPump;
+import org.argouml.application.events.ArgoEventTypes;
+import org.argouml.application.events.ArgoProjectEvent;
import org.argouml.application.helpers.ApplicationVersion;
import org.argouml.configuration.Configuration;
import org.argouml.i18n.Translator;
@@ -59,8 +62,8 @@
import org.tigris.gef.presentation.Fig;
/**
- * The ProjectImpl is a data structure that represents the designer's
- * current project. It manages the list of diagrams and UML models.
+ * The ProjectImpl is a data structure that represents the designer's current
+ * project. It manages the list of diagrams and UML models.
* <p>
* NOTE: This was named Project until 0.25.4 when it was replaced by an
* interface of the same name and renamed to ProjectImpl.
@@ -75,8 +78,8 @@
/**
* Default name for a project.
*/
- private static final String UNTITLED_FILE =
- Translator.localize("label.projectbrowser-title");
+ private static final String UNTITLED_FILE = Translator
+ .localize("label.projectbrowser-title");
/**
* The UID.
@@ -90,8 +93,11 @@
/* The preferences with project-scope: */
private String authorname;
+
private String authoremail;
+
private String description;
+
/* The ArgoUML version with which this project was last saved: */
private String version;
@@ -106,8 +112,8 @@
private String historyFile;
/**
- * The version number of the persistence format that last
- * saved this project.
+ * The version number of the persistence format that last saved this
+ * project.
*/
private int persistenceVersion;
@@ -115,18 +121,20 @@
* Instances of the UML model.
*/
private final List models = new ArrayList();
-
+
private Object root;
+
private final Collection roots = new HashSet();
-
/**
* Instances of the UML diagrams.
*/
private final List<ArgoDiagram> diagrams = new ArrayList<ArgoDiagram>();
-
+
private Object currentNamespace;
+
private Map<String, Object> uuidRefs;
+
private transient VetoableChangeSupport vetoSupport;
private ProfileConfiguration profileConfiguration;
@@ -135,7 +143,7 @@
* The active diagram, pointer to a diagram in the list with diagrams.
*/
private ArgoDiagram activeDiagram;
-
+
/** The name of the diagram to show by default after loading a project. */
private String savedDiagramName;
@@ -149,16 +157,17 @@
// TODO: Change this to use an UndoManager instance per project when
// GEF has been enhanced.
private UndoManager undoManager = DefaultUndoManager.getInstance();
-
+
/**
* Constructor.
- *
+ *
* @param theProjectUri Uri to read the project from.
*/
public ProjectImpl(URI theProjectUri) {
this();
/* TODO: Why was this next line in the code so long? */
-// uri = PersistenceManager.getInstance().fixUriExtension(theProjectUri);
+ // uri =
+ // PersistenceManager.getInstance().fixUriExtension(theProjectUri);
uri = theProjectUri;
}
@@ -186,16 +195,15 @@
}
/*
- * @deprecated by MVW in V0.25.4 - replaced by
- * {@link PersistenceManager#getProjectBaseName(Project)}
- * Rationale: Remove dependency on persistence subsystem.
+ * @deprecated by MVW in V0.25.4 - replaced by {@link
+ * PersistenceManager#getProjectBaseName(Project)} Rationale: Remove
+ * dependency on persistence subsystem.
*/
@Deprecated
public String getBaseName() {
return PersistenceManager.getInstance().getProjectBaseName(this);
}
-
public String getName() {
// TODO: maybe separate name
if (uri == null) {
@@ -205,30 +213,27 @@
}
/*
- * @deprecated by MVW in V0.25.4 - replaced by
- * {@link PersistenceManager#setProjectName(String, Project)}
- * Rationale: Remove dependency on persistence subsystem.
+ * @deprecated by MVW in V0.25.4 - replaced by {@link
+ * PersistenceManager#setProjectName(String, Project)} Rationale: Remove
+ * dependency on persistence subsystem.
*/
@Deprecated
- public void setName(final String n)
- throws URISyntaxException {
+ public void setName(final String n) throws URISyntaxException {
PersistenceManager.getInstance().setProjectName(n, this);
}
-
public URI getUri() {
return uri;
}
-
public URI getURI() {
return uri;
}
/*
- * @deprecated by MVW in V0.25.4 - replaced by
- * {@link PersistenceManager#setProjectUri(URI, Project)}
- * Rationale: Remove dependency on persistence subsystem.
+ * @deprecated by MVW in V0.25.4 - replaced by {@link
+ * PersistenceManager#setProjectUri(URI, Project)} Rationale: Remove
+ * dependency on persistence subsystem.
*/
@Deprecated
public void setURI(URI theUri) {
@@ -240,8 +245,8 @@
*/
public void setUri(URI theUri) {
if (LOG.isDebugEnabled()) {
- LOG.debug("Setting project URI from \"" + uri
- + "\" to \"" + theUri + "\".");
+ LOG.debug("Setting project URI from \"" + uri + "\" to \"" + theUri
+ + "\".");
}
uri = theUri;
}
@@ -250,35 +255,28 @@
URI theProjectUri = file.toURI();
if (LOG.isDebugEnabled()) {
- LOG.debug("Setting project file name from \""
- + uri
- + "\" to \""
- + theProjectUri
- + "\".");
+ LOG.debug("Setting project file name from \"" + uri + "\" to \""
+ + theProjectUri + "\".");
}
uri = theProjectUri;
}
-
@SuppressWarnings("deprecation")
public Vector<String> getSearchPath() {
return new Vector<String>(searchpath);
}
-
public List<String> getSearchPathList() {
return Collections.unmodifiableList(searchpath);
}
-
public void addSearchPath(final String searchPathElement) {
if (!searchpath.contains(searchPathElement)) {
searchpath.add(searchPathElement);
}
}
-
public List<ProjectMember> getMembers() {
LOG.info("Getting the members there are " + members.size());
return members;
@@ -303,7 +301,6 @@
LOG.info("Added todo member, there are now " + members.size());
}
-
public void addMember(Object m) {
if (m == null) {
@@ -321,7 +318,7 @@
} else {
throw new IllegalArgumentException(
"The member must be a UML model todo member or diagram."
- + "It is " + m.getClass().getName());
+ + "It is " + m.getClass().getName());
}
LOG.info("There are now " + members.size() + " members");
}
@@ -332,11 +329,10 @@
private void addModelMember(final Object m) {
boolean memberFound = false;
- Object currentMember =
- members.get(0);
+ Object currentMember = members.get(0);
if (currentMember instanceof ProjectMemberModel) {
- Object currentModel =
- ((ProjectMemberModel) currentMember).getModel();
+ Object currentModel = ((ProjectMemberModel) currentMember)
+ .getModel();
if (currentModel == m) {
memberFound = true;
}
@@ -352,20 +348,18 @@
members.add(pm);
} else {
LOG.info("Attempted to load 2 models");
- throw new IllegalArgumentException(
- "Attempted to load 2 models");
+ throw new IllegalArgumentException("Attempted to load 2 models");
}
}
-
public void addModel(final Object model) {
if (!Model.getFacade().isAModel(model)) {
throw new IllegalArgumentException();
- }
+ }
if (!models.contains(model)) {
setRoot(model);
- }
+ }
}
private void addModelInternal(final Object model) {
@@ -377,6 +371,7 @@
/**
* Removes a project member diagram completely from the project.
+ *
* @param d the ArgoDiagram
*/
protected void removeProjectMemberDiagram(ArgoDiagram d) {
@@ -407,9 +402,10 @@
d.remove();
setSaveEnabled(true);
}
-
+
/**
* Enables the save action if this project is the current project
+ *
* @param enable true to enable
*/
private void setSaveEnabled(boolean enable) {
@@ -419,12 +415,10 @@
}
}
-
public String getAuthorname() {
return authorname;
}
-
public void setAuthorname(final String s) {
final String oldAuthorName = authorname;
AbstractCommand command = new AbstractCommand() {
@@ -440,12 +434,10 @@
undoManager.execute(command);
}
-
public String getAuthoremail() {
return authoremail;
}
-
public void setAuthoremail(final String s) {
final String oldAuthorEmail = authoremail;
AbstractCommand command = new AbstractCommand() {
@@ -461,22 +453,18 @@
undoManager.execute(command);
}
-
public String getVersion() {
return version;
}
-
public void setVersion(String s) {
version = s;
}
-
public String getDescription() {
return description;
}
-
public void setDescription(final String s) {
final String oldDescription = description;
AbstractCommand command = new AbstractCommand() {
@@ -492,28 +480,23 @@
undoManager.execute(command);
}
-
public String getHistoryFile() {
return historyFile;
}
-
public void setHistoryFile(final String s) {
historyFile = s;
}
-
- @SuppressWarnings({ "deprecation", "unchecked" })
+ @SuppressWarnings( { "deprecation", "unchecked" })
public Vector getUserDefinedModels() {
return new Vector(models);
}
-
public List getUserDefinedModelList() {
return models;
}
-
public Collection getModels() {
Set result = new HashSet();
result.addAll(models);
@@ -528,7 +511,6 @@
return Collections.unmodifiableCollection(result);
}
-
@Deprecated
public Object getModel() {
if (models.size() != 1) {
@@ -537,12 +519,10 @@
return models.iterator().next();
}
-
public Object findType(String s) {
return findType(s, true);
}
-
public Object getDefaultAttributeType() {
if (profileConfiguration.getDefaultTypeStrategy() != null) {
return profileConfiguration.getDefaultTypeStrategy()
@@ -551,7 +531,6 @@
return null;
}
-
public Object getDefaultParameterType() {
if (profileConfiguration.getDefaultTypeStrategy() != null) {
return profileConfiguration.getDefaultTypeStrategy()
@@ -559,7 +538,6 @@
}
return null;
}
-
public Object getDefaultReturnType() {
if (profileConfiguration.getDefaultTypeStrategy() != null) {
@@ -569,7 +547,6 @@
return null;
}
-
public Object findType(String s, boolean defineNew) {
if (s != null) {
s = s.trim();
@@ -588,14 +565,12 @@
if (cls == null && defineNew) {
LOG.debug("new Type defined!");
- cls =
- Model.getCoreFactory().buildClass(getCurrentNamespace());
+ cls = Model.getCoreFactory().buildClass(getCurrentNamespace());
Model.getCoreHelper().setName(cls, s);
}
return cls;
}
-
public Collection<Fig> findFigsForMember(Object member) {
Collection<Fig> figs = new ArrayList<Fig>();
for (ArgoDiagram diagram : diagrams) {
@@ -607,7 +582,6 @@
return figs;
}
-
public Collection findAllPresentationsFor(Object obj) {
Collection<Fig> figs = new ArrayList<Fig>();
for (ArgoDiagram diagram : diagrams) {
@@ -624,16 +598,14 @@
throw new IllegalArgumentException("typeName must be non-null");
}
if (!Model.getFacade().isANamespace(namespace)) {
- throw new IllegalArgumentException(
- "Looking for the classifier " + typeName
- + " in a non-namespace object of " + namespace
+ throw new IllegalArgumentException("Looking for the classifier "
+ + typeName + " in a non-namespace object of " + namespace
+ ". A namespace was expected.");
- }
+ }
- Collection allClassifiers =
- Model.getModelManagementHelper()
- .getAllModelElementsOfKind(namespace,
- Model.getMetaTypes().getClassifier());
+ Collection allClassifiers = Model.getModelManagementHelper()
+ .getAllModelElementsOfKind(namespace,
+ Model.getMetaTypes().getClassifier());
for (Object classifier : allClassifiers) {
if (typeName.equals(Model.getFacade().getName(classifier))) {
@@ -644,22 +616,19 @@
return null;
}
-
public void setCurrentNamespace(final Object m) {
if (m != null && !Model.getFacade().isANamespace(m)) {
throw new IllegalArgumentException();
- }
+ }
currentNamespace = m;
}
-
public Object getCurrentNamespace() {
return currentNamespace;
}
-
@SuppressWarnings("deprecation")
public Vector<ArgoDiagram> getDiagrams() {
return new Vector<ArgoDiagram>(diagrams);
@@ -669,12 +638,10 @@
return Collections.unmodifiableList(diagrams);
}
-
public int getDiagramCount() {
return diagrams.size();
}
-
public ArgoDiagram getDiagram(String name) {
for (ArgoDiagram ad : diagrams) {
if (ad.getName() != null && ad.getName().equals(name)) {
@@ -688,21 +655,23 @@
return null;
}
-
public void addDiagram(final ArgoDiagram d) {
// send indeterminate new value instead of making copy of vector
- d.setProject(this);
+ d.setProject(this);
diagrams.add(d);
d.addPropertyChangeListener("name", new NamePCL());
setSaveEnabled(true);
+
+ ArgoEventPump.fireEvent(new ArgoProjectEvent(ArgoEventTypes.PROJECT_DIAGRAM_ADDED_EVENT, this, d));
}
/**
- * Listener to events from the Diagram class. <p>
- *
+ * Listener to events from the Diagram class.
+ * <p>
+ *
* Purpose: changing the name of a diagram shall set the need save flag.
- *
+ *
* @author Michiel
*/
private class NamePCL implements PropertyChangeListener {
@@ -713,19 +682,18 @@
/**
* Removes a diagram from the list with diagrams.
- *
- * Removes (hopefully) the event listeners for this diagram. Does
- * not remove the diagram from the project members. This should
- * not be called directly. Use moveToTrash if you want to remove a
- * diagram.
- *
+ *
+ * Removes (hopefully) the event listeners for this diagram. Does not remove
+ * the diagram from the project members. This should not be called directly.
+ * Use moveToTrash if you want to remove a diagram.
+ *
* @param d the ArgoDiagram
*/
protected void removeDiagram(ArgoDiagram d) {
diagrams.remove(d);
- /* Remove the dependent
- * modelelements, such as the statemachine
- * for a statechartdiagram:
+ /*
+ * Remove the dependent modelelements, such as the statemachine for a
+ * statechartdiagram:
*/
Object o = d.getDependentElement();
if (o != null) {
@@ -737,7 +705,7 @@
if (!Model.getFacade().isAUMLElement(me)) {
throw new IllegalArgumentException();
- }
+ }
int presentations = 0;
for (ArgoDiagram d : diagrams) {
@@ -746,12 +714,12 @@
return presentations;
}
-
public Object getInitialTarget() {
if (savedDiagramName != null) {
- /* Hence, a diagram name was saved in the project
- * that we are loading. So, we use this name
- * to retrieve any matching diagram. */
+ /*
+ * Hence, a diagram name was saved in the project that we are
+ * loading. So, we use this name to retrieve any matching diagram.
+ */
return getDiagram(savedDiagramName);
}
if (diagrams.size() > 0) {
@@ -759,14 +727,14 @@
return diagrams.get(0);
}
if (models.size() > 0) {
- /* If there was no diagram at all,
- * then use the (first) UML model. */
+ /*
+ * If there was no diagram at all, then use the (first) UML model.
+ */
return models.iterator().next();
}
return null;
}
-
public VetoableChangeSupport getVetoSupport() {
if (vetoSupport == null) {
vetoSupport = new VetoableChangeSupport(this);
@@ -774,7 +742,6 @@
return vetoSupport;
}
-
public void preSave() {
for (ArgoDiagram diagram : diagrams) {
diagram.preSave();
@@ -782,7 +749,6 @@
// TODO: is preSave needed for models?
}
-
public void postSave() {
for (ArgoDiagram diagram : diagrams) {
diagram.postSave();
@@ -791,7 +757,6 @@
setSaveEnabled(true);
}
-
public void postLoad() {
for (ArgoDiagram diagram : diagrams) {
diagram.postLoad();
@@ -809,7 +774,7 @@
uuidRefs = null;
}
- ////////////////////////////////////////////////////////////////
+ // //////////////////////////////////////////////////////////////
// trash related methods
/**
@@ -837,12 +802,12 @@
/**
* Removes some object from the project.
- *
+ *
* @param obj the object to be thrown away
*/
protected void trashInternal(Object obj) {
if (Model.getFacade().isAModel(obj)) {
- return; //Can not delete the model
+ return; // Can not delete the model
}
if (obj != null) {
@@ -865,11 +830,14 @@
// don't have a decent event system set up:
ProjectManager.getManager()
.firePropertyChanged("remove", obj, null);
+
+ // The above code could now be replaced be listening to the event being fired below
+ ArgoEventPump.fireEvent(new ArgoProjectEvent(ArgoEventTypes.PROJECT_DIAGRAM_REMOVED_EVENT, this, (ArgoDiagram)obj));
} else if (obj instanceof Fig) {
((Fig) obj).deleteFromModel();
// If we delete a FigEdge
// or FigNode we actually call this method with the owner not
- // the Fig itself. However, this method
+ // the Fig itself. However, this method
// is called by ActionDeleteModelElements
// for primitive Figs (without owner).
LOG.info("Request to delete a Fig " + obj.getClass().getName());
@@ -881,12 +849,10 @@
}
}
-
public boolean isInTrash(Object obj) {
return trashcan.contains(obj);
}
-
@SuppressWarnings("deprecation")
public void setDefaultModel(final Object theDefaultModel) {
// We could attempt to create a profile with the model and add it
@@ -898,13 +864,12 @@
+ "ProfileConfiguration");
}
-
@SuppressWarnings("deprecation")
public Object getDefaultModel() {
// Do our best to return something which looks vaguely like old code
- // might have expected. Hopefully no one is using this...
-
+ // might have expected. Hopefully no one is using this...
+
Collection profilePackages;
try {
profilePackages = getProfile().getProfilePackages();
@@ -912,7 +877,7 @@
LOG.error("Failed to get profile", e);
return null;
}
-
+
// First priority is Model for best backward compatibility
for (Object pkg : profilePackages) {
if (Model.getFacade().isAModel(pkg)) {
@@ -928,38 +893,36 @@
// if all else fails, just the first element
return profilePackages.iterator().next();
}
-
+
public Object findTypeInDefaultModel(String name) {
if (defaultModelTypeCache.containsKey(name)) {
return defaultModelTypeCache.get(name);
}
-
+
Object result = profileConfiguration.findType(name);
-
+
defaultModelTypeCache.put(name, result);
return result;
}
-
@SuppressWarnings("deprecation")
@Deprecated
public final Object getRoot() {
return root;
}
-
@SuppressWarnings("deprecation")
@Deprecated
public void setRoot(final Object theRoot) {
if (theRoot == null) {
throw new IllegalArgumentException(
- "A root model element is required");
+ "A root model element is required");
}
if (!Model.getFacade().isAModel(theRoot)) {
throw new IllegalArgumentException(
- "The root model element must be a model - got "
- + theRoot.getClass().getName());
+ "The root model element must be a model - got "
+ + theRoot.getClass().getName());
}
Object treeRoot = Model.getModelManagementFactory().getRootModel();
@@ -975,17 +938,15 @@
roots.add(theRoot);
}
-
public final Collection getRoots() {
return Collections.unmodifiableCollection(roots);
}
-
public void setRoots(final Collection elements) {
boolean modelFound = false;
for (Object element : elements) {
if (!Model.getFacade().isAPackage(element)) {
- LOG.warn("Top level element other than package found - "
+ LOG.warn("Top level element other than package found - "
+ Model.getFacade().getName(element));
}
if (Model.getFacade().isAModel(element)) {
@@ -1011,19 +972,16 @@
return rv;
}
-
@SuppressWarnings("deprecation")
@Deprecated
public Vector<String> getSearchpath() {
return new Vector(searchpath);
}
-
public Map<String, Object> getUUIDRefs() {
return uuidRefs;
}
-
@SuppressWarnings("deprecation")
@Deprecated
public void setSearchpath(final Vector<String> theSearchpath) {
@@ -1031,7 +989,6 @@
searchpath.addAll(theSearchpath);
}
-
public void setSearchPath(final List<String> theSearchpath) {
searchpath.clear();
searchpath.addAll(theSearchpath);
@@ -1041,22 +998,18 @@
uuidRefs = uUIDRefs;
}
-
public void setVetoSupport(VetoableChangeSupport theVetoSupport) {
vetoSupport = theVetoSupport;
}
-
public ArgoDiagram getActiveDiagram() {
return activeDiagram;
}
-
-
public void setActiveDiagram(final ArgoDiagram theDiagram) {
activeDiagram = theDiagram;
}
-
+
public void setSavedDiagramName(String diagramName) {
savedDiagramName = diagramName;
}
@@ -1105,24 +1058,20 @@
emptyTrashCan();
}
-
public int getPersistenceVersion() {
return persistenceVersion;
}
-
public void setPersistenceVersion(int pv) {
persistenceVersion = pv;
}
-
@SuppressWarnings("deprecation")
@Deprecated
public Profile getProfile() {
return getProfileConfiguration().getProfiles().get(0);
}
-
public String repair() {
StringBuilder report = new StringBuilder();
Iterator it = members.iterator();
@@ -1133,28 +1082,28 @@
return report.toString();
}
-
public ProjectSettings getProjectSettings() {
return projectSettings;
}
+
public UndoManager getUndoManager() {
return undoManager;
}
-
+
public ProfileConfiguration getProfileConfiguration() {
return profileConfiguration;
}
public void setProfileConfiguration(ProfileConfiguration pc) {
if (this.profileConfiguration != null) {
- this.members.remove(this.profileConfiguration);
+ this.members.remove(this.profileConfiguration);
}
-
+
this.profileConfiguration = pc;
// there's just one ProfileConfiguration in a project
// and there's no other way to add another one
- members.add(pc);
+ members.add(pc);
}
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.