Mercurial > hg > ccmieditor
view java/src/uk/ac/qmul/eecs/ccmi/gui/DiagramEventSource.java @ 8:ea7885bd9bff tip
fixed bug : render solid line as dotted/dashed when moving the stylus from dotted/dashed to solid
author | ccmi-guest |
---|---|
date | Thu, 03 Jul 2014 16:12:20 +0100 |
parents | 9e67171477bc |
children |
line wrap: on
line source
/* CCmI Editor - A Collaborative Cross-Modal Diagram Editing Tool Copyright (C) 2011 Queen Mary University of London (http://ccmi.eecs.qmul.ac.uk/) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package uk.ac.qmul.eecs.ccmi.gui; /** * This class identifies the source of a diagram event, that is an event generated by an action * in the diagram such as for instance a node insertion, deletion or renaming. The class carries informations * about how the event was generated (from the tree, from the graph etc.) and if the event was * generated by the local user or another user co-editing the diagram. In either case an id of the * user is conveyed as well. An id is just a String each user assigns to themselves through a user * interface panel. */ public class DiagramEventSource { /** * An enumeration of the different ways an event can be generated. NONE is for when the * information is not relevant (as normally no event listener will be triggered by the event). * PERS is for actions triggered when rebuilding a diagram from a ccmi file, so not as a consequence * of a direct user action. */ public static enum Type{ TREE, GRPH, // graph HAPT, // haptics PERS, // persistence NONE; } /* constructor used only by the static event sources */ private DiagramEventSource(Type type){ this.type = type; local = true; } /** * Creates a new DiagramEventSource out of a previous one (normally one of the static default sources). * The type of the new object will be the same as the one passed as argument. Object created through * this constructor are marked as non local * * @see #isLocal() * @param eventSource an instance of this class */ public DiagramEventSource(DiagramEventSource eventSource){ this.type = eventSource.type; local = false; } /** * Returns true if the event is local, that is it's has been generated from an action of * the local user and not from a message coming from the server. * * @return {@code true} if the event has been generated by the local user */ public boolean isLocal(){ return local; } /** * Returns a copy of this event source that is marked as local. * * @return a local copy of this event source * @see #isLocal() */ public DiagramEventSource getLocalSource(){ return new DiagramEventSource(type); } /** * Returns the name of the diagram where the event happened, that has this * object as source. * * @return the name of the diagram */ public String getDiagramName(){ return diagramName; } /** * Sets the name of the diagram where the event happened, that has this * object as source. * * @param diagramName the name of the diagram */ public void setDiagramName(String diagramName){ this.diagramName = diagramName; } /** * The String representation of this object is the concatenation of the type * and the ID. * * @return a String representing this object */ @Override public String toString(){ return (local ? ISLOCAL_CHAR : ISNOTLOCAL_CHAR )+type.toString(); } /** * Returns an instance of this class out of a string representation, such as * returned by {@code toString()} * @param s a String representation of a {@code DiagramEventSource} instance, such as * returned by {@code toString()} * @return a new instance of {@code DiagramEventSource} */ public static DiagramEventSource valueOf(String s){ Type t = Type.valueOf(s.substring(1, 5)); DiagramEventSource toReturn = new DiagramEventSource(t); toReturn.local = (s.charAt(0) == ISLOCAL_CHAR) ? true : false; return toReturn; } private boolean local; public final Type type; private String diagramName; private static char ISLOCAL_CHAR = 'L'; private static char ISNOTLOCAL_CHAR = 'R'; /** Source for events triggered by the local user through the tree. These static sources * are used when the diagram is not shared with any other user. When it is, a new DiagramEventSource * will be created, which includes informations about the id and locality of the user who generated the event */ public static DiagramEventSource TREE = new DiagramEventSource(Type.TREE); /** Source for events triggered by the local user through the graph */ public static DiagramEventSource GRPH = new DiagramEventSource(Type.GRPH); /** Source for events triggered by the local user through the haptic device */ public static DiagramEventSource HAPT = new DiagramEventSource(Type.HAPT); /** Source for events triggered by the local user when opening a file */ public static DiagramEventSource PERS = new DiagramEventSource(Type.PERS); /** Source for events not relevant to model listeners */ public static DiagramEventSource NONE = new DiagramEventSource(Type.NONE); }