001    /* EVolve - an Extensible Software Visualization Framework
002     * Copyright (C) 2001-2002 Qin Wang
003     *
004     * This library is free software; you can redistribute it and/or
005     * modify it under the terms of the GNU Library General Public
006     * License as published by the Free Software Foundation; either
007     * version 2 of the License, or (at your option) any later version.
008     *
009     * This library is distributed in the hope that it will be useful,
010     * but WITHOUT ANY WARRANTY; without even the implied warranty of
011     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
012     * Library General Public License for more details.
013     *
014     * You should have received a copy of the GNU Library General Public
015     * License along with this library; if not, write to the
016     * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
017     * Boston, MA 02111-1307, USA.
018     */
019    
020    /*
021     * EVolve is distributed at http://www.sable.mcgill.ca/EVolve/
022     */
023    
024    package EVolve.data;
025    
026    import EVolve.*;
027    import java.awt.*;
028    
029    public class Selection {
030        private String name;
031        private int entityType;
032        private Entity[] selected;
033        private int start, end;
034        private ReferenceLink[] link;
035        private Color color;
036        private static int total = 0;
037        // following two variable are only useful when the time is measured by invocation/allocations
038        private int startEvent = -1, endEvent = -1;
039    
040        public Selection(int entityType, int[] selected, int start, int end) {
041            this.entityType = entityType;
042            this.selected = new Entity[selected.length];
043            for (int i = 0; i < selected.length; i++) {
044                this.selected[i] = Scene.getDataManager().getEntity()[entityType][selected[i]];
045            }
046            this.start = start;
047            this.end = end;
048            this.color = null;
049            this.link = new ReferenceLink[0];
050    
051            this.name = "Selection" + total;
052            total++;
053        }
054    
055        public void setName(String name) {
056            this.name = name;
057        }
058    
059        public String getName() {
060            return name;
061        }
062    
063        public void setColor(Color color) {
064            this.color = color;
065        }
066    
067        public Color getColor() {
068            return color;
069        }
070    
071        public void setLink(ReferenceLink[] link) {
072            this.link = link;
073        }
074    
075        public ReferenceLink[] getLink() {
076            return link;
077        }
078    
079        public int getEntityType() {
080            return entityType;
081        }
082    
083        public Entity[] getSelected() {
084            return selected;
085        }
086    
087        public void setSelected(Entity[] selected) {
088            this.selected = selected;
089        }
090    
091        public int getStart() {
092            return start;
093        }
094    
095        public int getEnd() {
096            return end;
097        }
098    
099        public int getStartEvent() {
100            return startEvent;
101        }
102    
103        public int getEndEvent() {
104            return endEvent;
105        }
106    
107        public void setStartEvent(int start) {
108            startEvent = start;
109        }
110    
111        public void setEndEvent(int end) {
112            endEvent = end;
113        }
114    
115        public Selection specialClone() {
116            int ids[] = new int[selected.length];
117    
118            for (int i=0; i<ids.length; i++) {
119                ids[i] = selected[i].getId();
120            }
121    
122            Selection returnVal = new Selection(entityType,ids,0,Integer.MAX_VALUE);
123            returnVal.setColor(color);
124            returnVal.setName(name);
125            returnVal.setLink(link);
126    
127            return returnVal;
128        }
129    }