summaryrefslogtreecommitdiff
path: root/sources
diff options
context:
space:
mode:
Diffstat (limited to 'sources')
-rw-r--r--sources/core/VSAbstractProcess.java758
-rw-r--r--sources/core/VSInternalProcess.java456
-rw-r--r--sources/core/VSMessage.java208
-rw-r--r--sources/core/VSMessageStub.java61
-rw-r--r--sources/core/VSTask.java523
-rw-r--r--sources/core/VSTaskManager.java585
-rw-r--r--sources/core/time/VSLamportTime.java76
-rw-r--r--sources/core/time/VSTime.java45
-rw-r--r--sources/core/time/VSVectorTime.java119
-rw-r--r--sources/events/VSAbstractEvent.java266
-rw-r--r--sources/events/VSCopyableEvent.java40
-rw-r--r--sources/events/VSRegisteredEvents.java409
-rw-r--r--sources/events/implementations/VSProcessCrashEvent.java69
-rw-r--r--sources/events/implementations/VSProcessRecoverEvent.java70
-rw-r--r--sources/events/internal/VSAbstractInternalEvent.java84
-rw-r--r--sources/events/internal/VSMessageReceiveEvent.java112
-rw-r--r--sources/events/internal/VSProtocolEvent.java199
-rw-r--r--sources/events/internal/VSProtocolScheduleEvent.java151
-rw-r--r--sources/exceptions/VSEventNotCopyableException.java39
-rw-r--r--sources/exceptions/VSNegativeNumberException.java35
-rw-r--r--sources/exceptions/VSParseIntegerVectorException.java36
-rw-r--r--sources/prefs/VSDefaultPrefs.java301
-rw-r--r--sources/prefs/VSDefaultPrefsDE.java275
-rw-r--r--sources/prefs/VSPrefs.java1210
-rw-r--r--sources/prefs/VSPrefsRestriction.java157
-rw-r--r--sources/prefs/VSSerializablePrefs.java60
-rw-r--r--sources/prefs/editors/VSAbstractBetterEditor.java126
-rw-r--r--sources/prefs/editors/VSAbstractEditor.java1061
-rw-r--r--sources/prefs/editors/VSColorChooser.java78
-rw-r--r--sources/prefs/editors/VSEditorFrame.java117
-rw-r--r--sources/prefs/editors/VSEditorTable.java314
-rw-r--r--sources/prefs/editors/VSProcessEditor.java131
-rw-r--r--sources/prefs/editors/VSSimulatorEditor.java143
-rw-r--r--sources/protocols/VSAbstractProtocol.java475
-rw-r--r--sources/protocols/implementations/README10
-rw-r--r--sources/protocols/implementations/VSBasicMulticastProtocol.java112
-rw-r--r--sources/protocols/implementations/VSBerkelyTimeProtocol.java229
-rw-r--r--sources/protocols/implementations/VSBroadcastProtocol.java129
-rw-r--r--sources/protocols/implementations/VSDummyProtocol.java124
-rw-r--r--sources/protocols/implementations/VSExternalTimeSyncProtocol.java145
-rw-r--r--sources/protocols/implementations/VSInternalTimeSyncProtocol.java149
-rw-r--r--sources/protocols/implementations/VSOnePhaseCommitProtocol.java174
-rw-r--r--sources/protocols/implementations/VSPingPongProtocol.java136
-rw-r--r--sources/protocols/implementations/VSReliableMulticastProtocol.java168
-rw-r--r--sources/protocols/implementations/VSTwoPhaseCommitProtocol.java224
-rw-r--r--sources/serialize/VSNotSerializable.java34
-rw-r--r--sources/serialize/VSSerializable.java55
-rw-r--r--sources/serialize/VSSerialize.java301
-rw-r--r--sources/simulator/VSCreateTask.java204
-rw-r--r--sources/simulator/VSLogging.java225
-rw-r--r--sources/simulator/VSMain.java95
-rw-r--r--sources/simulator/VSMenuItemStates.java135
-rw-r--r--sources/simulator/VSSimulator.java1537
-rw-r--r--sources/simulator/VSSimulatorFrame.java632
-rw-r--r--sources/simulator/VSSimulatorVisualization.java1821
-rw-r--r--sources/utils/VS3Tupel.java84
-rw-r--r--sources/utils/VSAboutFrame.java106
-rw-r--r--sources/utils/VSClassLoader.java55
-rw-r--r--sources/utils/VSFrame.java135
-rw-r--r--sources/utils/VSInfoArea.java69
-rw-r--r--sources/utils/VSPriorityQueue.java55
-rw-r--r--sources/utils/VSRandom.java63
-rw-r--r--sources/utils/VSTools.java119
63 files changed, 0 insertions, 16114 deletions
diff --git a/sources/core/VSAbstractProcess.java b/sources/core/VSAbstractProcess.java
deleted file mode 100644
index eeff528..0000000
--- a/sources/core/VSAbstractProcess.java
+++ /dev/null
@@ -1,758 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package core;
-
-import java.awt.*;
-import java.io.*;
-import java.util.*;
-
-import core.time.*;
-//import events.*;
-//import events.implementations.*;
-import prefs.*;
-import protocols.*;
-import serialize.*;
-import simulator.*;
-import utils.*;
-
-/**
- * The class VSAbstractProcess, an object of this class represents a process
- * of a simulator.
- *
- * @author Paul C. Buetow
- */
-public abstract class VSAbstractProcess extends VSSerializablePrefs
- implements VSSerializable {
- /** The data serialization id. */
- protected static final long serialVersionUID = 1L;
-
- /** The protocols to reset if the simulator is over or the reset
- * button has been pressed.
- */
- protected ArrayList<VSAbstractProtocol> protocolsToReset;
-
- /** The crash history. represents all crashes of the process using the
- * global simulator time.
- */
- protected ArrayList<Long> crashHistory;
-
- /** The lamport time history. */
- protected ArrayList<VSLamportTime> lamportTimeHistory;
-
- /** The vector time history. */
- protected ArrayList<VSVectorTime> vectorTimeHistory;
-
- /** The color used if the process has crashed. */
- protected Color crashedColor;;
-
- /** The process' current color. */
- protected Color currentColor;
-
- /** A temp. color. For internal usage. */
- protected Color tmpColor;
-
- /** The loging object. */
- protected VSLogging loging;
-
- /** The simulator's default prefs. */
- protected VSPrefs prefs;
-
- /** The random generator of the process. */
- protected VSRandom random;
-
- /** The simulator canvas. */
- protected VSSimulatorVisualization simulatorVisualization;
-
- /** The random crash task. May be null if there is no such random task. */
- protected VSTask randomCrashTask;
-
- /** The vector time. */
- protected VSVectorTime vectorTime;
-
- /** The tasks of the process. DO ONLY MANIPULATE THIS OBJECT WITHIN THE
- * VSTaskManager CLASS! OTHERWISE THE SYNCHRONIZATION IS WRONG! Use the
- * VSAbstractProcess.getTasks() method to get a reference to this object
- * within the VSTaskManager! */
- protected VSPriorityQueue<VSTask> tasks;
-
- /** The process has crashed. But may be working again. */
- protected boolean hasCrashed;
-
- /** The process has started. But may be paused or crashed.. */
- protected boolean hasStarted;
-
- /** The process is crashed. */
- protected boolean isCrashed;
-
- /** The process is highlighted. */
- protected boolean isHighlighted;
-
- /** The process is paused. */
- protected boolean isPaused;
-
- /** The time has been modified in a task. Needed by the task manager to
- * calculate correct offsets.
- */
- protected boolean timeModified;
-
- /** The clock offset. Used by the task manager and also by the process'
- * clock variance.
- */
- protected double clockOffset;
-
- /** The clock variance. */
- protected float clockVariance;
-
- /** The process id. */
- protected int processID;
-
- /** The process num. It is different to the process id. It represents the
- * array index of there the process is stored at.
- */
- protected int processNum;
-
- /** The global time. */
- protected long globalTime;
-
- /** The lamport time. */
- protected long lamportTime;
-
- /** The local time. */
- protected long localTime;
-
- /** The Constant DEFAULT_INTEGER_VALUE_KEYS.
- * This array contains all Integer prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_INTEGER_VALUE_KEYS[] = {
- "process.prob.crash",
- "message.prob.outage",
- };
-
- /** The Constant DEFAULT_LONG_VALUE_KEYS.
- * This array contains all Long prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_LONG_VALUE_KEYS[] = {
- "message.sendingtime.min",
- "message.sendingtime.max",
- };
-
- /** The Constant DEFAULT_FLOAT_VALUE_KEYS.
- * This array contains all Float prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_FLOAT_VALUE_KEYS[] = {
- "process.clock.variance",
- };
-
- /** The Constant DEFAULT_COLOR_VALUE_KEYS.
- * This array contains all Color prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_COLOR_VALUE_KEYS[] = {
- "col.process.default",
- "col.process.running",
- "col.process.stopped",
- "col.process.highlight",
- "col.process.crashed",
- };
-
- /** The Constant DEFAULT_STRING_VALUE_KEYS.
- * This array contains all String prefs of the process which should show
- * up in the prefs menu! All keys which dont start with "sim." only show
- * up in the extended prefs menu!
- */
- protected static final String DEFAULT_STRING_VALUE_KEYS[] = {
- };
-
- /**
- * Instantiates a new process.
- *
- * @param prefs the simulator's default prefs
- * @param processNum the process num
- * @param simulatorVisualization the simulator canvas
- * @param loging the loging object
- */
- public VSAbstractProcess(VSPrefs prefs, int processNum,
- VSSimulatorVisualization simulatorVisualization,
- VSLogging loging) {
- init(prefs, processNum, simulatorVisualization, loging);
- }
-
- /**
- * Inits a the process.
- *
- * @param prefs the simulator's default prefs
- * @param processNum the process num
- * @param simulatorVisualization the simulator canvas
- * @param loging the loging object
- */
- protected void init(VSPrefs prefs, int processNum,
- VSSimulatorVisualization simulatorVisualization,
- VSLogging loging) {
- /* May be not null if called from deserialization */
- if (this.protocolsToReset == null)
- this.protocolsToReset = new ArrayList<VSAbstractProtocol>();
-
- this.processNum = processNum;
- this.prefs = prefs;
- this.simulatorVisualization = simulatorVisualization;
- this.loging = loging;
-
- processID = simulatorVisualization.processIDCount();
- random = new VSRandom(processID*processNum+processID+processNum);
- tasks = new VSPriorityQueue<VSTask>();
-
- initTimeFormats();
-
- isPaused = true;
-
- /* Create the super.VSPrefs with it's default prefs */
- fillWithDefaults();
-
- /* Make local copys in order to have more performance */
- clockVariance = getFloat("process.clock.variance");
- currentColor = getColor("col.process.default");
- crashedColor = getColor("col.process.crashed");
-
- /* Make additional process settings editable through GUI */
- initLong("process.localtime", localTime,
- prefs.getString("lang.en.process.time.local"), "ms");
-
- createRandomCrashTask_();
- }
-
- /**
- * Inits the time formats. E.g. lamport and vector time stamps.
- */
- protected void initTimeFormats() {
- lamportTime = 0;
- lamportTimeHistory = new ArrayList<VSLamportTime>();
-
- vectorTime = new VSVectorTime(0);
- vectorTimeHistory = new ArrayList<VSVectorTime>();
- crashHistory = new ArrayList<Long>();
-
- final int numProcesses = simulatorVisualization.getNumProcesses();
- for (int i = 0; i < numProcesses; ++i)
- vectorTime.add(new Long(0));
- }
-
- /**
- * Reset time formats. E.g. lamport and vector time stamps.
- */
- protected void resetTimeFormats() {
- lamportTime = 0;
- lamportTimeHistory.clear();
-
- vectorTime = new VSVectorTime(0);
- vectorTimeHistory.clear();
- crashHistory.clear();
-
- final int numProcesses = simulatorVisualization.getNumProcesses();
- for (int i = numProcesses; i > 0; --i)
- vectorTime.add(new Long(0));
- }
-
- /**
- * Creates a random percentage 0..100 using the process' own pseudo
- * random number generator object of the VSRandom class.
- *
- * @return A random percentage 0..100.
- */
- public synchronized int getRandomPercentage() {
- return random.nextInt() % 101;
- }
-
- /**
- * Adds the clock offset. This method is used by the task manager. The
- * clock offset identifies if the local time of the process has changed and
- * how much..
- *
- * @param add the clock offset to add.
- */
- protected synchronized void addClockOffset(long add) {
- this.clockOffset += add;
- }
-
- /**
- * Gets the process id.
- *
- * @return the process id
- */
- public synchronized int getProcessID() {
- return processID;
- }
-
- /**
- * Gets the process num. The num is different to the process id. It
- * represents the array index of there the process is stored at.
- *
- * @return the process num
- */
- public synchronized int getProcessNum() {
- return processNum;
- }
-
- /**
- * Sets the process id.
- *
- * @param processID the new process id
- */
- public synchronized void setProcessID(int processID) {
- this.processID = processID;
- }
-
- /**
- * Gets the process' local time.
- *
- * @return the process' local time
- */
- public synchronized long getTime() {
- return localTime;
- }
-
- /**
- * Sets the process' local time.
- *
- * @param time the new local time of the process.
- */
- public synchronized void setTime(final long time) {
- if (time >= 0)
- this.localTime = time;
- else
- this.localTime = 0;
-
- this.timeModified = true;
- }
-
- /**
- * Checks if the process is crashed.
- *
- * @return true, if is crashed
- */
- public synchronized boolean isCrashed() {
- return isCrashed;
- }
-
- /**
- * Sets if the process is crashed.
- *
- * @param isCrashed true if the process is crashed.
- */
- public synchronized void isCrashed(boolean isCrashed) {
- this.isCrashed = isCrashed;
- crashHistory.add(new Long(globalTime));
- if (!hasCrashed)
- hasCrashed = true;
- }
-
- /**
- * Checks if the process has crashed. The difference to isCrashed is,
- * that the process may be fully functional again after crashing. This
- * method is needed by the simulator canvas in order to see if it should
- * paint 'crashed areas' using the crash history of this process.
- *
- * @return true, if yes
- */
- public synchronized boolean hasCrashed() {
- return hasCrashed;
- }
-
- /**
- * Gets the global time.
- *
- * @return the global time
- */
- public synchronized long getGlobalTime() {
- return globalTime;
- }
-
- /**
- * Gets the clock variance.
- *
- * @return the clock variance
- */
- public synchronized float getClockVariance() {
- return clockVariance;
- }
-
- /**
- * Sets the clock variance.
- *
- * @param clockVariance the new clock variance
- */
- public synchronized void setClockVariance(float clockVariance) {
- /* If negative, only allow < 1 prefs */
- if (clockVariance < 0) {
- int part = (int) -clockVariance;
- if (part > 0) {
- this.clockVariance = 0;
- return;
- }
- }
-
- this.clockVariance = clockVariance;
- }
-
- /**
- * Gets the a random crash time.
- *
- * @return the a random crash time. It will be -1 if the process will not
- * crash at all randomly!
- */
- protected long getARandomCrashTime() {
- /* Check if the process will crash or not */
- if (getRandomPercentage() < getInteger("process.prob.crash")) {
- /* Calculate the random crash time! */
- final long crashTime =
- random.nextLong(simulatorVisualization.getUntilTime()+1) %
- simulatorVisualization.getUntilTime();
- return crashTime;
- }
-
- /* No crash */
- return -1;
- }
-
- /**
- * Increases the process' lamport time.
- */
- public synchronized void increaseLamportTime() {
- setLamportTime(getLamportTime()+1);
- }
-
- /**
- * Updates the process' lamport time.
- *
- * @param time the lamport time to use as its update reference.
- */
- public synchronized void updateLamportTime(long time) {
- final long lamportTime = getLamportTime() + 1;
-
- if (time > lamportTime)
- setLamportTime(time);
- else
- setLamportTime(lamportTime);
- }
-
- /**
- * Gets the lamport time.
- *
- * @return the lamport time.
- */
- public synchronized long getLamportTime() {
- return lamportTime;
- }
-
- /**
- * Sets the lamport time.
- *
- * @param lamportTime the new lamport time
- */
- public synchronized void setLamportTime(long lamportTime) {
- this.lamportTime = lamportTime;
- lamportTimeHistory.add(new VSLamportTime(globalTime, lamportTime));
- }
-
- /**
- * Gets the lamport time history as an array.
- *
- * @return the lamport time history array
- */
- public synchronized VSTime[] getLamportTimeArray() {
- final int size = lamportTimeHistory.size();
- final VSTime[] arr = new VSLamportTime[size];
-
- for (int i = 0; i < size; ++i)
- arr[i] = (VSTime) lamportTimeHistory.get(i);
-
- return arr;
- }
-
- /**
- * Increases the vector and the lamport time by 1 each if
- * sim.update.vectortime.all/sim.update.lamporttime.all are set
- * to true.
- */
- public void increaseVectorAndLamportTimeIfAll() {
- if (prefs.getBoolean("sim.update.lamporttime.all"))
- increaseLamportTime();
-
- if (prefs.getBoolean("sim.update.vectortime.all"))
- increaseVectorTime();
- }
-
- /**
- * Increases the vector time by 1.
- */
- public synchronized void increaseVectorTime() {
- vectorTime.set(processNum,
- new Long(vectorTime.get(processNum).longValue()+1));
- vectorTime.setGlobalTime(globalTime);
- vectorTimeHistory.add(vectorTime.getCopy());
- }
-
- /**
- * Updates the vector time.
- *
- * @param vectorTimeUpdate the vector time of the other process to use for
- * the update
- */
- public synchronized void updateVectorTime(VSVectorTime vectorTimeUpdate) {
- final int size = vectorTime.size();
-
- for (int i = 0; i < size; ++i) {
- if (i == processNum)
- vectorTime.set(i, new Long(vectorTime.get(i).longValue()+1));
- else if (vectorTimeUpdate.get(i) > vectorTime.get(i))
- vectorTime.set(i, vectorTimeUpdate.get(i));
- }
-
- vectorTime.setGlobalTime(globalTime);
- vectorTimeHistory.add(vectorTime.getCopy());
- }
-
- /**
- * Gets the vector time.
- *
- * @return the vector time
- */
- public synchronized VSVectorTime getVectorTime() {
- return vectorTime;
- }
-
- /**
- * Gets the vector time history as an array.
- *
- * @return the vector time history array
- */
- public synchronized VSTime[] getVectorTimeArray() {
- final int size = vectorTimeHistory.size();
- final VSTime[] arr = new VSTime[size];
-
- for (int i = 0; i < size; ++i)
- arr[i] = (VSTime) vectorTimeHistory.get(i);
-
- return arr;
- }
-
- /**
- * Gets the crash history array.
- *
- * @return the crash history array
- */
- public synchronized Long[] getCrashHistoryArray() {
- final int size = crashHistory.size();
- final Long[] arr = new Long[size];
-
- for (int i = 0; i < size; ++i)
- arr[i] = crashHistory.get(i);
-
- return arr;
- }
-
- /**
- * Logg a message to the loging area.
- *
- * @param message the message to log
- */
- public void log(String message) {
- loging.log(toString() + "; " + message, globalTime);
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefs#fillWithDefaults()
- */
- public void fillWithDefaults() {
- prefs.copyIntegers(this, DEFAULT_INTEGER_VALUE_KEYS);
- prefs.copyLongs(this, DEFAULT_LONG_VALUE_KEYS);
- prefs.copyFloats(this, DEFAULT_FLOAT_VALUE_KEYS);
- prefs.copyColors(this, DEFAULT_COLOR_VALUE_KEYS);
- prefs.copyStrings(this, DEFAULT_STRING_VALUE_KEYS);
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefs#toString()
- */
- public synchronized String toString() {
- StringBuffer buffer = new StringBuffer();
- buffer.append(prefs.getString("lang.en.process.id"));
- buffer.append(": ");
- buffer.append(getProcessID());
- buffer.append("; ");
- buffer.append(prefs.getString("lang.en.process.time.local"));
- buffer.append(": ");
- buffer.append(VSTools.getTimeString(getTime()));
- buffer.append("; ");
- buffer.append(prefs.getString("lang.en.time.lamport"));
- buffer.append(": ");
- buffer.append(lamportTime);
- buffer.append("; ");
- buffer.append(prefs.getString("lang.en.time.vector"));
- buffer.append(": ");
- buffer.append(vectorTime);
- return buffer.toString();
- }
-
- /**
- * The extended string representation of the process object.
- *
- * @return the extended string representation
- */
- public synchronized String toStringFull() {
- StringBuffer buffer = new StringBuffer();
- buffer.append(toString());
- buffer.append("; paused: ");
- buffer.append(isPaused);
- buffer.append("; crashed: ");
- buffer.append(isCrashed);
- buffer.append("; crashTask: ");
- buffer.append(randomCrashTask);
- return buffer.toString();
- }
-
- /**
- * Equals. Checks, if both processes have the same process num.
- *
- * @param process the process to compare to
- *
- * @return true, if both processes are the same (same processNum).
- */
- public boolean equals(VSAbstractProcess process) {
- return process.getProcessNum() == processNum;
- }
-
- /**
- * Gets the simulator's default prefs.
- *
- * @return the default prefs
- */
- public VSPrefs getPrefs() {
- return prefs;
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- super.serialize(serialize, objectOutputStream);
-
- if (VSSerialize.DEBUG)
- System.out.println("Serializing: VSAbstractProcess (num: "
- + processNum
- + "; id: " + processID + ")");
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- objectOutputStream.writeObject(new Integer(processID));
- objectOutputStream.writeObject(new Integer(protocolsToReset.size()));
- for (VSAbstractProtocol protocol : protocolsToReset) {
- objectOutputStream.writeObject(protocol.getClassname());
- protocol.serialize(serialize, objectOutputStream);
- }
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- super.deserialize(serialize, objectInputStream);
-
- /* Bugfix, being compatible with old versions */
- super.deleteLong("process.localTime");
-
-
- updateFromPrefs_();
-
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSAbstractProcess");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- this.processID = ((Integer)
- objectInputStream.readObject()).intValue();
- int numProtocols = ((Integer)
- objectInputStream.readObject()).intValue();
-
- for (int i = 0; i < numProtocols; ++i) {
- String protocolClassname = (String) objectInputStream.readObject();
- VSAbstractProtocol protocol = getProtocolObject_(protocolClassname);
- protocol.deserialize(serialize, objectInputStream);
- }
-
- localTime = 0;
- setLong("process.localtime", localTime);
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- serialize.setObject(processNum, "process", this);
- }
-
- /**
- * Sets the current color.
- *
- * @param newColor the new current color
- */
- protected void setCurrentColor(Color newColor) {
- if (isHighlighted)
- tmpColor = newColor;
- else
- currentColor = newColor;
- }
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#updateFromPrefs()
- */
- protected abstract void updateFromPrefs_();
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#createRandomCrashTask()
- */
- protected abstract void createRandomCrashTask_();
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#getProtocolObjekt(java.util.String)
- */
- protected abstract VSAbstractProtocol getProtocolObject_(
- String protocolClassname);
-}
diff --git a/sources/core/VSInternalProcess.java b/sources/core/VSInternalProcess.java
deleted file mode 100644
index 01e23d0..0000000
--- a/sources/core/VSInternalProcess.java
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package core;
-
-import java.awt.*;
-
-import core.time.*;
-import events.*;
-import events.implementations.*;
-import prefs.*;
-import protocols.*;
-import simulator.*;
-import utils.*;
-
-/**
- * The class VSInternalProcess, an object of this class represents a process
- * of a simulator.
- *
- * @author Paul C. Buetow
- */
-public class VSInternalProcess extends VSAbstractProcess {
- /**
- * Instantiates a new process.
- *
- * @param prefs the simulator's default prefs
- * @param processNum the process num
- * @param simulatorVisualization the simulator canvas
- * @param loging the loging object
- */
- public VSInternalProcess(VSPrefs prefs, int processNum,
- VSSimulatorVisualization simulatorVisualization,
- VSLogging loging) {
- super(prefs, processNum, simulatorVisualization, loging);
- }
-
- /**
- * Called from the VSProcessEditor, after finishing editing! This makes
- * sure that the VSInternalProcess object is using the up to date prefs!
- */
- public synchronized void updateFromPrefs() {
- setClockVariance(getFloat("process.clock.variance"));
- setLocalTime(getLong("process.localtime"));
- crashedColor = getColor("col.process.crashed");
- createRandomCrashTask();
- }
-
- /**
- * Called from the VSProcessEditor, before starting editing! This makes
- * sure that the editor edits the up to date prefs of the process!
- */
- public synchronized void updatePrefs() {
- setFloat("process.clock.variance", getClockVariance());
- setLong("process.localtime", getTime());
- }
-
- /**
- * Syncs the process' time. This method is using the clockOffset and
- * clockVariance variables. This method is called repeatedly from the
- * VSSimulatorVisualization in order to update the process' local and global
- * time values.
- *
- * @param globalTime the global time.
- */
- public synchronized void syncTime(final long globalTime) {
- final long currentGlobalTimestep = globalTime - this.globalTime;
- this.globalTime = globalTime;
-
- localTime += currentGlobalTimestep;
- clockOffset += currentGlobalTimestep * (double) clockVariance;
-
- while (clockOffset >= 1) {
- clockOffset -= 1;
- ++localTime;
- }
-
- while (clockOffset <= -1) {
- clockOffset += 1;
- --localTime;
- }
-
- /* We do not want a negative time */
- if (localTime < 0)
- localTime = 0;
- }
-
- /**
- * Highlights the process.
- */
- public synchronized void highlightOn() {
- tmpColor = currentColor;
- currentColor = getColor("col.process.highlight");
- isHighlighted = true;
- }
-
- /**
- * Unhighlights the process.
- */
- public synchronized void highlightOff() {
- currentColor = tmpColor;
- isHighlighted = false;
- }
-
- /**
- * Resets the process.
- */
- public synchronized void reset() {
- isPaused = true;
- isCrashed = false;
- hasCrashed = false;
- localTime = 0;
- globalTime = 0;
- clockOffset = 0;
-
- for (VSAbstractProtocol protocol : protocolsToReset)
- protocol.reset();
-
- setCurrentColor(getColor("col.process.default"));
- resetTimeFormats();
- }
-
- /**
- * Creates the random crash task. The crash task will be created only if
- * the process is not crashed atm. and if
- * VSInternalProcess.getARandomCrashTime() * returns a non-negative value.
- * The random crash task uses the simulaion's global time for its
- * scheduling.
- */
- public synchronized void createRandomCrashTask() {
- if (!isCrashed) {
- VSTaskManager taskManager = simulatorVisualization.getTaskManager();
- long crashTime = getARandomCrashTime();
-
- if (crashTime < 0)
- return;
-
- if (randomCrashTask != null)
- taskManager.removeTask(randomCrashTask);
-
- if (crashTime >= getGlobalTime()) {
- VSAbstractEvent event = new VSProcessCrashEvent();
- randomCrashTask = new VSTask(crashTime, this, event,
- VSTask.GLOBAL);
- taskManager.addTask(randomCrashTask);
-
- } else {
- randomCrashTask = null;
- }
- }
- }
-
- /**
- * Creates a random percentage 0..100 using the process' own pseudo
- * random number generator object of the VSRandom class.
- *
- * @return A random percentage 0..100.
- */
- public synchronized int getRandomPercentage() {
- return random.nextInt() % 101;
- }
-
- /**
- * Adds the clock offset. This method is used by the task manager. The
- * clock offset identifies if the local time of the process has changed and
- * how much..
- *
- * @param add the clock offset to add.
- */
- public synchronized void addClockOffset(long add) {
- this.clockOffset += add;
- }
-
- /**
- * The process' state is 'play'. Called by the simulator canvas.
- */
- public synchronized void play() {
- isPaused = false;
- setCurrentColor(getColor("col.process.running"));
- }
-
- /**
- * The process' state is 'pause'. Called by the simulator canvas.
- */
- public synchronized void pause() {
- isPaused = true;
- setCurrentColor(getColor("col.process.stopped"));
- }
-
- /**
- * The process' state is 'Finish'. Called by the simulator canvas.
- */
- public synchronized void finish() {
- isPaused = true;
- setCurrentColor(getColor("col.process.default"));
- }
-
- /**
- * Gets the current process' color.
- *
- * @return the current color of the process.
- */
- public synchronized Color getColor() {
- return currentColor;
- }
-
- /**
- * Gets the color of this process if it's crashed.
- *
- * @return the crashed color
- */
- public synchronized Color getCrashedColor() {
- return crashedColor;
- }
-
- /**
- * Checks if the time has been modified. by a task.
- * This mehod is needed by the task manager in order to add a clock offset
- * to the process object.
- *
- * @return true, if yes
- */
- public synchronized boolean timeModified() {
- return timeModified;
- }
-
- /**
- * Sets if the time has been modified by a task.
- *
- * @param timeModified true, if it has been modified.
- */
- public synchronized void timeModified(boolean timeModified) {
- this.timeModified = timeModified;
- }
-
- /**
- * Sets the global time.
- *
- * @param globalTime the new global time
- */
- public synchronized void setGlobalTime(final long globalTime) {
- this.globalTime = globalTime >= 0 ? globalTime : 0;
- }
-
- /* Gets the duration time of a message to send.
- *
- * @return the duration time
- */
- public synchronized long getDurationTime() {
- final long maxDurationTime = getLong("message.sendingtime.max");
- final long minDurationTime = getLong("message.sendingtime.min");
-
- if (maxDurationTime <= minDurationTime)
- return minDurationTime;
-
- final int diff = (int) (maxDurationTime - minDurationTime);
-
- /* Integer overflow */
- if (diff <= 0)
- return minDurationTime;
-
- return minDurationTime + random.nextInt(diff+1);
- }
-
- /**
- * Gets the a random message outage time.
- *
- * @param durationTime the duration time
- *
- * @return the a random message outage time. It will be -1 if the message
- * will not get lost at all.
- */
- public synchronized long getARandomMessageOutageTime(long durationTime,
- VSInternalProcess receiverProcess) {
- int percentage = (int) ((getInteger("message.prob.outage") +
- receiverProcess.getInteger(
- "message.prob.outage")) / 2);
-
- /* Check if the message will have an outage or not */
- if (getRandomPercentage() < percentage) {
-
- /* Calculate the random outage time! */
- long outageTime = globalTime + random.nextLong(durationTime+1) %
- simulatorVisualization.getUntilTime();
-
- return outageTime;
- }
-
- /* No outage */
- return -1;
- }
-
- /**
- * Gets the random crash task.
- *
- * @return the random crash task
- */
- public synchronized VSTask getCrashTask() {
- return randomCrashTask;
- }
-
- /**
- * Checks if the process is paused.
- *
- * @return true, if is paused
- */
- public synchronized boolean isPaused() {
- return isPaused;
- }
-
- /**
- * Called by a task if the process sends a message.
- *
- * @param message the message to send.
- */
- public synchronized void sendMessage(VSMessage message) {
- StringBuffer buffer = new StringBuffer();
- buffer.append(prefs.getString("lang.en.message.sent"));
- buffer.append("; ");
- buffer.append(message.toStringFull());
- log(buffer.toString());
- simulatorVisualization.sendMessage(message);
- }
-
- /**
- * Gets the simulator canvas.
- *
- * @return the simulator canvas
- */
- public VSSimulatorVisualization getSimulatorCanvas() {
- return simulatorVisualization;
- }
-
- /**
- * Removes the process at the specified index. Called by the simulator
- * canvas if a process has been removed from the simulator. Needed in
- * order to update the vector time and the local processNum.
- *
- * @param index the index the process has to get removed.
- */
- public synchronized void removedAProcessAtIndex(int index) {
- if (index < processNum)
- --processNum;
-
- vectorTime.remove(index);
- for (VSVectorTime vectorTime : vectorTimeHistory)
- vectorTime.remove(index);
- }
-
- /**
- * Added a process. Needed in order to update the vector time's size.
- * Called by the simulator canvas if a process has been added to the
- * simulator.
- */
- public synchronized void addedAProcess() {
- vectorTime.add(new Long(0));
- for (VSVectorTime vectorTime : vectorTimeHistory)
- vectorTime.add(new Long(0));
- }
-
- /**
- * Gets the tasks of the process.
- *
- * @return The tasks
- */
- public VSPriorityQueue<VSTask> getTasks() {
- return tasks;
- }
-
- /**
- * Sets the tasks of the process.
- *
- * @param tasks The tasks
- */
- public void setTasks(VSPriorityQueue<VSTask> tasks) {
- this.tasks = tasks;
- }
-
- /**
- * Gets the protocol object.
- *
- * @param protocolClassname the protocol classname
- *
- * @return the protocol object
- */
- public synchronized VSAbstractProtocol getProtocolObject(
- String protocolClassname) {
- VSAbstractProtocol protocol = null;
-
- if (!objectExists(protocolClassname)) {
- protocol = (VSAbstractProtocol)
- VSRegisteredEvents.createEventInstanceByClassname(
- protocolClassname, this);
-
- setObject(protocolClassname, protocol);
- protocolsToReset.add(protocol);
-
- } else {
- protocol = (VSAbstractProtocol) getObject(protocolClassname);
- }
-
- return protocol;
- }
-
- /**
- * Sets the local time.
- *
- * @param localTime the new local time.
- */
- public synchronized void setLocalTime(final long localTime) {
- if (localTime >= 0)
- this.localTime = localTime;
- else
- this.localTime = 0;
- }
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#updateFromPrefs()
- */
- protected void updateFromPrefs_() {
- updateFromPrefs();
- }
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#createRandomCrashTask()
- */
- protected void createRandomCrashTask_() {
- createRandomCrashTask();
- }
-
- /* (non-Javadoc)
- * @see core.VSInternalMessage#getProtocolObjekt(java.util.String)
- */
- protected VSAbstractProtocol getProtocolObject_(String protocolClassname) {
- return getProtocolObject(protocolClassname);
- }
-}
diff --git a/sources/core/VSMessage.java b/sources/core/VSMessage.java
deleted file mode 100644
index eca2001..0000000
--- a/sources/core/VSMessage.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package core;
-
-import core.time.*;
-import events.*;
-import prefs.VSPrefs;
-
-/**
- * An object of this class represents a message which is sent from one process
- * to another process in the simulator.
- *
- * @author Paul C. Buetow
- */
-public class VSMessage extends VSPrefs {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The constant IS_SERVER_MESSAGE. */
- public static final boolean IS_SERVER_MESSAGE = true;
-
- /** The constant IS_CLIENT_MESSAGE. */
- public static final boolean IS_CLIENT_MESSAGE = false;
-
- /** true, if the message has been sent from a server. false, if the message
- * has been sent from a client.
- */
- private boolean isServerMessage;
-
- /** Each message belongs to a specific protocol. This variable defined the
- * class name of the protocol being used.
- */
- private String protocolClassname;
-
- /** The default application preferences. */
- private VSPrefs prefs;
-
- /** A reference to the process who sent this message. */
- private VSInternalProcess sendingProcess;
-
- /** The vector time of the sending process after sending. The receiver
- * process will use this vector time in order to update the local vector
- * time.
- */
- private VSVectorTime vectorTime;
-
- /** The lamport time of the sending process after sending. The receiver
- * process will use this lamport time in order to update the local vector
- * time.
- */
- private long lamportTime;
-
- /** Each message has its own unique ID. The ID will show up in the loging
- * window of the simulator
- */
- private long messageID;
-
- /** This counter is used in order to generate unique message ID's. */
- private static long messageCounter;
-
- /**
- * The constructor of the message. Creates a new message object.
- */
- public VSMessage() {
- this.messageID = ++messageCounter;
- }
-
- /**
- * Initializes the message.
- *
- * @param process The sending process of this message.
- * @param protocolClassname The classname of the protocol this message.
- * @param isServerMessage Sets if the message has been sent by a server.
- */
- void init(VSInternalProcess process, String protocolClassname,
- boolean isServerMessage) {
- this.sendingProcess = process;
- this.protocolClassname = protocolClassname;
- this.isServerMessage = isServerMessage;
- this.prefs = process.getPrefs();
-
- lamportTime = sendingProcess.getLamportTime();
- vectorTime = sendingProcess.getVectorTime().getCopy();
- }
-
- /**
- * Gets the protocol name of the message.
- *
- * @return The protocol name of the message.
- */
- public String getName() {
- return VSRegisteredEvents.getNameByClassname(getProtocolClassname());
- }
-
- /**
- * Gets the protocol classname.
- *
- * @return The protocol classname of the message.
- */
- public String getProtocolClassname() {
- return protocolClassname;
- }
-
- /**
- * Gets the message id.
- *
- * @return The id of the message.
- */
- public long getMessageID() {
- return messageID;
- }
-
- /**
- * Gets a reference of the sending process.
- *
- * @return The process which sent this message.
- */
- public VSAbstractProcess getSendingProcess() {
- return sendingProcess;
- }
-
- /**
- * Gets the lamport time.
- *
- * @return The lamport time of the sending process.
- */
- public long getLamportTime() {
- return lamportTime;
- }
-
- /**
- * Gets the vector time.
- *
- * @return The vector time of the sending process.
- */
- public VSVectorTime getVectorTime() {
- return vectorTime;
- }
-
- /**
- * Checks if the message has been sent by a server or a client.
- *
- * @return true, if the message has been sent by a server. false, if the
- * message has been sent by a client.
- */
- public boolean isServerMessage() {
- return isServerMessage;
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefs#toString()
- */
- public String toString() {
- StringBuffer buffer = new StringBuffer();
-
- buffer.append("ID: ");
- buffer.append(messageID);
- buffer.append("; ");
- buffer.append(prefs.getString("lang.en.protocol"));
- buffer.append(": ");
- buffer.append(VSRegisteredEvents.getShortnameByClassname(
- getProtocolClassname()));
-
- return buffer.toString();
- }
-
- /**
- * Extended string representation of the message object.
- *
- * @return Extended string representation of the message object.
- */
- public String toStringFull() {
- return toString() + "; " + super.toString();
- }
-
- /**
- * Compares two messages.
- *
- * @param message The message to compare with.
- *
- * @return true, if the messages have the same id. Otherwise false.
- */
- public boolean equals(VSMessage message) {
- return messageID == message.getMessageID();
- }
-}
-
diff --git a/sources/core/VSMessageStub.java b/sources/core/VSMessageStub.java
deleted file mode 100644
index 0210b74..0000000
--- a/sources/core/VSMessageStub.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package core;
-
-//import core.time.*;
-//import events.*;
-//import prefs.VSPrefs;
-
-/**
- * An object of this class represents a message stub. A message stub allows
- * to run the init method on a VSMessage object. The init method should be
- * hidden by the protocol programming API.
- *
- * @author Paul C. Buetow
- */
-public class VSMessageStub {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The message */
- private VSMessage message;
-
- /**
- * The constructor of the message stub. Creates a new message stub object.
- *
- * @param message the message
- */
- public VSMessageStub(VSMessage message) {
- this.message = message;
- }
-
- /* (non-Javadoc)
- * @see core.VSMessage#init(VSInternalProcess, java.util.String, boolean)
- */
- public void init(VSInternalProcess process, String protocolClassname,
- boolean isServerMessage) {
- message.init(process, protocolClassname, isServerMessage);
- }
-}
-
diff --git a/sources/core/VSTask.java b/sources/core/VSTask.java
deleted file mode 100644
index 381b268..0000000
--- a/sources/core/VSTask.java
+++ /dev/null
@@ -1,523 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 -2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package core;
-
-import java.io.*;
-
-import events.*;
-import events.implementations.*;
-import events.internal.*;
-import exceptions.*;
-import prefs.VSPrefs;
-import protocols.VSAbstractProtocol;
-import serialize.*;
-//import utils.*;
-
-/**
- * The class VSTask, an object of this class represents a task to do or done.
- * All tasks are managed by the task manager. There are local and global timed
- * tasks. Local timed tasks are being fullfilled if the process' local time is
- * reached. Global timed tasks are being fullfilled if the simulator's time is
- * reached.
- *
- * @author Paul C. Buetow
- */
-public class VSTask implements Comparable, VSSerializable {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The Constant LOCAL. Used for the constructor if it's a local timed
- * task.
- */
- public final static boolean LOCAL = true;
-
- /** The Constant GLOBAL. Used for the constructor if it's a global timed
- * task.
- */
- public final static boolean GLOBAL = false;
-
- /** The task time. */
- private long taskTime;
-
- /** The event which takes plase if the task time matches. */
- private VSAbstractEvent event;
-
- /** The process to run the task at. */
- private VSInternalProcess process;
-
- /** The simulator's default prefs. */
- private VSPrefs prefs;
-
- /** The task is programmed. The task will be still in the task manager
- * after reset.
- */
- private boolean isProgrammed;
-
- /** The task is global timed. If set to true, its local timed. */
- private boolean isGlobalTimed;
-
- /** The task counter. Needed for the unique task numbers. */
- private static int taskCounter;
-
- /** The task number. */
- private int taskNum;
-
- /**
- * Instantiates a new task.
- *
- * @param taskTime the task time
- * @param process the process
- * @param event the event
- * @param isLocal the taks is local timed
- */
- public VSTask(long taskTime, VSInternalProcess process,
- VSAbstractEvent event,
- boolean isLocal) {
- init(taskTime, process, event, isLocal);
- }
-
- /**
- * Instantiates a new task, it's a copy constructor.
- *
- * @param task the task to copy
- */
- public VSTask(VSTask task) {
- VSAbstractEvent event = task.getEvent();
-
- try {
- // Use the copy of the event object
- event = event.getCopy();
-
- } catch (VSEventNotCopyableException e) {
- // Use the original event object
- }
-
- init(task.getTaskTime(),
- task.getProcess(),
- event,
- !task.isGlobalTimed());
- }
-
- /**
- * Instantiates a new task during a deserialization.
- *
- * @param serialize the serialize object
- * @param objectInputStream The input stream
- */
- public VSTask(VSSerialize serialize, ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- deserialize(serialize, objectInputStream);
- }
-
- /**
- * Inits the task
- *
- * @param taskTime the task time
- * @param process the process
- * @param event the event
- * @param isLocal the taks is local timed
- */
- private void init(long taskTime, VSInternalProcess process,
- VSAbstractEvent event, boolean isLocal) {
- this.process = process;
- this.taskTime = taskTime > 0 ? taskTime : 0;
- /* May be not null if called from deserialization */
- if (this.event == null)
- this.event = event;
- this.prefs = process.getPrefs();
- this.isGlobalTimed = !isLocal;
- this.taskNum = ++taskCounter;
- }
-
- /**
- * Gets the task num.
- *
- * @return the task num
- */
- public int getTaskNum() {
- return taskNum;
- }
-
- /**
- * Sets if the task is programmed.
- *
- * @param isProgrammed true, if the task is programmed
- */
- public void isProgrammed(boolean isProgrammed) {
- this.isProgrammed = isProgrammed;
- }
-
- /**
- * Checks if the task is programmed.
- *
- * @return true, if the task is programmed
- */
- public boolean isProgrammed() {
- return isProgrammed;
- }
-
- /**
- * Checks if the task is using an "internal event".
- *
- * @return true, if the task is using an internal event
- */
- public boolean hasInternalEvent() {
- return event instanceof VSAbstractInternalEvent;
- }
-
- /**
- * Checks if the task should not get serialized.
- *
- * @return true, if the task should not get serialized
- */
- public boolean hasNotSerializableEvent() {
- return event instanceof VSNotSerializable;
- }
-
- /**
- * Checks if the task is a message receive event.
- *
- * @return true, if it is a message receive event
- */
- public boolean hasMessageReceiveEvent() {
- return event instanceof VSMessageReceiveEvent;
- }
-
- /**
- * Checks if the task is a process recover event.
- *
- * @return true, if it is a process recover event
- */
- public boolean hasProcessRecoverEvent() {
- return event instanceof VSProcessRecoverEvent;
- }
-
- /**
- * Checks if the task belongs to the specified protocol object.
- *
- * @param protocol the protocol object to check against.
- *
- * @return true, if it's a task using the protocol object.
- */
- public boolean isProtocol(VSAbstractProtocol protocol) {
- if (event instanceof VSAbstractProtocol)
- return ((VSAbstractProtocol) event).equals(protocol);
-
- return false;
- }
-
- /**
- * Checks if the task's time is over.
- *
- * @return true, if it's over
- */
- public boolean timeOver() {
- if (isGlobalTimed)
- return taskTime < process.getGlobalTime();
-
- return taskTime < process.getTime();
- }
-
- /**
- * Checks if the task equals to another task.
- *
- * @param task the task to compare to
- *
- * @return true, if equal (the task nums equal)
- */
- public boolean equals(VSTask task) {
- return taskNum == task.getTaskNum();
- }
-
- /**
- * Checks if the task belongs to the specified process.
- *
- * @param process the process to check against
- *
- * @return true, if the task is using the process
- */
- public boolean isProcess(VSInternalProcess process) {
- return this.process.equals(process);
- }
-
- /**
- * Checks if the task is global timed.
- *
- * @return true, if the taks is global timed
- */
- public boolean isGlobalTimed() {
- return isGlobalTimed;
- }
-
- /**
- * Gets the process.
- *
- * @return the process of the event
- */
- public VSInternalProcess getProcess() {
- return process;
- }
-
- /**
- * Runs the task.
- */
- public void run() {
- if (event.getProcess() == null)
- event.init(process);
-
- if (!(event instanceof VSMessageReceiveEvent)
- && !(event instanceof VSAbstractProtocol))
- process.increaseVectorAndLamportTimeIfAll();
-
- event.onStart();
- }
-
- /**
- * Gets the task time.
- *
- * @return the task time
- */
- public long getTaskTime() {
- return taskTime;
- }
-
- /**
- * Sets the task time.
- *
- * @param taskTime the task time
- */
- public void setTaskTime(long taskTime) {
- this.taskTime = taskTime;
- }
-
- /**
- * Sets the process.
- *
- * @param process the process
- */
- public void setProcess(VSInternalProcess process) {
- /* Only do it if the process differs */
- if (!this.process.equals(process)) {
- this.process = process;
-
- try {
- // Use the copy of the event object
- event = event.getCopy(process);
-
- } catch (VSEventNotCopyableException e) {
- if (event instanceof VSAbstractProtocol) {
- String eventShortname = event.getShortname();
- event = process.getProtocolObject(event.getClassname());
- event.setShortname(eventShortname);
- } else {
- System.out.println(e);
- }
- }
- }
- }
-
- /**
- * Gets the event.
- *
- * @return the event
- */
- public VSAbstractEvent getEvent() {
- return event;
- }
-
- /*
- private void log(String message) {
- process.log(message);
- }
- */
-
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- public String toString() {
- StringBuffer buffer = new StringBuffer();
-
- buffer.append(prefs.getString("lang.en.task"));
- buffer.append(" ");
- buffer.append(getTaskTime());
- buffer.append(event.toString());
- buffer.append("; PID: ");
- buffer.append(process.getProcessID());
- /*
- if (isProgrammed()) {
- buffer.append("; Programmed");
- }
- */
-
- return buffer.toString();
- }
-
- /* (non-Javadoc)
- * @see java.lang.Comparable#compareTo(java.lang.Object)
- */
- public int compareTo(Object object) {
- if (object instanceof VSTask) {
- final VSTask task = (VSTask) object;
-
- if (taskTime < task.getTaskTime())
- return -1;
-
- else if (taskTime > task.getTaskTime())
- return 1;
-
- VSAbstractEvent event2 = task.getEvent();
-
- /* If it's a recovering, it should get handled very first */
- boolean a = event instanceof VSProcessRecoverEvent;
- boolean b = event2 instanceof VSProcessRecoverEvent;
-
- if (a && b)
- return 0;
-
- if (a)
- return -1;
-
- if (b)
- return 1;
-
- /* If it's a crash, it should get handled second first */
- a = event instanceof VSProcessCrashEvent;
- b = event2 instanceof VSProcessCrashEvent;
-
- if (a && b)
- return 0;
-
- if (a)
- return -1;
-
- if (b)
- return 1;
-
- /* If it's a VSProtocolEvent, it should get handled third */
- a = event instanceof VSProtocolEvent;
- b = event2 instanceof VSProtocolEvent;
-
- if (a && b)
- return 0;
-
- if (a)
- return -1;
-
- if (b)
- return 1;
-
- String shortname = event.getShortname();
- String shortname2 = event2.getShortname();
-
- /* One of those may be null if an VSAbstractEvent object has not
- been initialized yet */
- if (shortname == null || shortname2 == null)
- return 0;
-
- return shortname.compareTo(shortname2);
- }
-
- return 0;
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- objectOutputStream.writeObject(new Integer(process.getProcessNum()));
-
- if (event.getClassname() == null)
- event.init(process);
-
- if (VSSerialize.DEBUG)
- System.out.println("Serializing: " + event.getClassname());
-
- objectOutputStream.writeObject(event.getClassname());
- objectOutputStream.writeObject(new Integer(event.getID()));
- event.serialize(serialize, objectOutputStream);
- objectOutputStream.writeObject(new Integer(taskNum));
- objectOutputStream.writeObject(new Long(taskTime));
- objectOutputStream.writeObject(new Boolean(isGlobalTimed));
- objectOutputStream.writeObject(new Boolean(isProgrammed));
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSTask");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- int processNum = ((Integer) objectInputStream.readObject()).intValue();
- VSInternalProcess process = (VSInternalProcess)
- serialize.getObject(processNum, "process");
-
- String eventClassname = (String) objectInputStream.readObject();
- int eventID = ((Integer) objectInputStream.readObject()).intValue();
-
- VSAbstractEvent event = null;
-
- if (serialize.objectExists(eventID, "event")) {
- event = (VSAbstractEvent) serialize.getObject(eventID, "event");
-
- } else {
- event = VSRegisteredEvents.
- createEventInstanceByClassname(eventClassname, process);
-
- serialize.setObject(eventID, "event", event);
- }
-
- event.deserialize(serialize, objectInputStream);
-
- int taskNum = ((Integer) objectInputStream.readObject()).intValue();
- long taskTime = ((Long) objectInputStream.readObject()).longValue();
- Boolean isGlobalTimed = (Boolean) objectInputStream.readObject();
- Boolean isProgrammed = (Boolean) objectInputStream.readObject();
-
- serialize.setObject(taskNum, "task", this);
- init(taskTime, process, event, !isGlobalTimed.booleanValue());
- this.isProgrammed = isProgrammed.booleanValue();
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-}
-
diff --git a/sources/core/VSTaskManager.java b/sources/core/VSTaskManager.java
deleted file mode 100644
index 8de8d80..0000000
--- a/sources/core/VSTaskManager.java
+++ /dev/null
@@ -1,585 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 -2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package core;
-
-import java.io.*;
-import java.util.*;
-
-import prefs.*;
-import serialize.*;
-import simulator.*;
-import utils.*;
-
-/**
- * The class VSTaskManager, it is responsible that all tasks will get
- * fullfilled in the correct order. Please also read the javadoc of the VSTask
- * class. It describes the difference between local and global timed tasks.
- *
- * @author Paul C. Buetow
- */
-public class VSTaskManager implements VSSerializable {
- /** The seriao version uid */
- private static final long serialVersionUID = 1L;
-
- /** The simulator canvas. */
- private VSSimulatorVisualization simulatorVisualization;
-
- /** The global tasks. */
- private PriorityQueue<VSTask> globalTasks;
-
- /** The fullfilled programmed tasks. */
- private LinkedList<VSTask> fullfilledProgrammedTasks;
-
- /** The Constant PROGRAMMED. */
- public final static boolean PROGRAMMED = true;
-
- /** The Constant ONLY_ONCE. */
- public final static boolean ONLY_ONCE = false;
-
- /** The simulator's default prefs. */
- private VSPrefs prefs;
-
- /**
- * Instantiates a new task manager object.
- *
- * @param prefs the simulator's default prefs
- * @param simulatorVisualization the simulator canvas
- */
- public VSTaskManager(VSPrefs prefs,
- VSSimulatorVisualization simulatorVisualization) {
- init(prefs, simulatorVisualization);
- }
-
- /**
- * Inits the task manager.
- *
- * @param prefs the simulator's default prefs
- * @param simulatorVisualization the simulator canvas
- */
- private void init(VSPrefs prefs,
- VSSimulatorVisualization simulatorVisualization) {
- this.prefs = prefs;
- this.simulatorVisualization = simulatorVisualization;
-
- /* May be not null if called from deserialization */
- if (globalTasks == null)
- this.globalTasks = new PriorityQueue<VSTask>();
-
- this.fullfilledProgrammedTasks = new LinkedList<VSTask>();
- }
-
- /**
- * Run tasks. This method gets called by the simulator canvas repeatedly.
- * Almost all simulator actions take place in this method.
- *
- * @param step the step
- * @param offset the offset
- * @param lastGlobalTime the last global time
- */
- public synchronized void runTasks(long step, long offset,
- long lastGlobalTime) {
- VSTask task = null;
- long localTime;
- long offsetTime;
- long taskTime;
- long globalTime;
- final long globalOffsetTime = lastGlobalTime + step;
- boolean redo;
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
-
- do {
- redo = false;
-
- /* Run tasks which have for its schedule the global time */
- while (globalTasks.size() != 0) {
- task = globalTasks.peek();
- VSInternalProcess process = task.getProcess();
- localTime = process.getTime();
- offsetTime = localTime + step;
- taskTime = task.getTaskTime();
- globalTime = process.getGlobalTime();
-
- if (globalOffsetTime < taskTime)
- break;
-
- globalTasks.poll();
- redo = true;
-
- if (process.isCrashed() && !task.hasProcessRecoverEvent()) {
- if (task.isProgrammed())
- fullfilledProgrammedTasks.add(task);
- continue;
- }
-
- if (globalOffsetTime == taskTime) {
- process.setGlobalTime(globalOffsetTime);
- process.setLocalTime(offsetTime);
- process.timeModified(false);
- task.run();
- process.setGlobalTime(globalTime);
- if (process.isCrashed())
- process.addClockOffset(step);
- if (process.timeModified())
- process.addClockOffset(process.getTime()-offsetTime);
- process.setLocalTime(localTime);
-
- } else { /* if (globalOffsetTime > taskTime) */
- final long diff = globalOffsetTime - taskTime;
- if (globalOffsetTime - diff < lastGlobalTime)
- process.setGlobalTime(lastGlobalTime);
- else
- process.setGlobalTime(globalOffsetTime - diff);
- process.setLocalTime(offsetTime - diff);
- process.timeModified(false);
- task.run();
- process.setGlobalTime(globalTime);
- if (process.isCrashed())
- process.addClockOffset(step);
- if (process.timeModified())
- process.addClockOffset(process.getTime()-
- (offsetTime-diff));
- process.setLocalTime(localTime);
- }
-
- if (task.isProgrammed())
- fullfilledProgrammedTasks.add(task);
- }
-
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- PriorityQueue<VSTask> tasks = process.getTasks();
-
- /* Run tasks which have for its schedule the local
- process times */
- while (tasks.size() != 0) {
- task = tasks.peek();
- process = task.getProcess();
- localTime = process.getTime();
- offsetTime = localTime + step;
- taskTime = task.getTaskTime();
- globalTime = process.getGlobalTime();
-
- if (offsetTime < taskTime)
- break;
-
- tasks.poll();
- redo = true;
-
- if (process.isCrashed() &&
- !task.hasProcessRecoverEvent()) {
- if (task.isProgrammed())
- fullfilledProgrammedTasks.add(task);
- continue;
- }
-
- if (offsetTime == taskTime) {
- process.setGlobalTime(globalOffsetTime);
- process.setLocalTime(offsetTime);
- process.timeModified(false);
- task.run();
- process.setGlobalTime(globalTime);
- if (process.timeModified())
- process.addClockOffset(process.getTime()-
- offsetTime);
- process.setLocalTime(localTime);
-
- } else { /* if (offsetTime > taskTime) */
- final long diff = offsetTime - taskTime;
- if (globalOffsetTime - diff < lastGlobalTime)
- process.setGlobalTime(lastGlobalTime);
- else
- process.setGlobalTime(globalOffsetTime-
- diff);
- process.setLocalTime(offsetTime - diff);
- process.timeModified(false);
- task.run();
- process.setGlobalTime(globalTime);
- if (process.timeModified())
- process.addClockOffset(process.getTime()-
- (offsetTime-diff));
- process.setLocalTime(localTime);
- }
-
- if (task.isProgrammed())
- fullfilledProgrammedTasks.add(task);
- }
- }
- }
-
- } while (redo);
- }
-
- /**
- * Resets the task manager.
- */
- public synchronized void reset() {
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
- PriorityQueue<VSTask> tmp = null;
-
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- tmp = process.getTasks();
- process.setTasks(new VSPriorityQueue<VSTask>());
-
- for (VSTask task : tmp) {
- if (task.isProgrammed())
- insert(task);
- }
- }
- }
-
- tmp = globalTasks;
- globalTasks = new PriorityQueue<VSTask>();
-
- while (fullfilledProgrammedTasks.size() != 0)
- insert(fullfilledProgrammedTasks.removeFirst());
-
- while (tmp.size() != 0) {
- VSTask task = tmp.poll();
- if (task.isProgrammed())
- insert(task);
- }
- }
-
- /**
- * Inserts a task. Only for internal usage. Use the add methods instead.
- * This method checks if the task to insert is a global or a local timed
- * task. And it also checks if the task's time is over already.
- *
- * @param task the task to insert
- */
- private synchronized void insert(VSTask task) {
- if (task.timeOver()) {
- if (task.isProgrammed())
- fullfilledProgrammedTasks.addLast(task);
-
- } else if (task.isGlobalTimed()) {
- globalTasks.add(task);
-
- } else {
- task.getProcess().getTasks().add(task);
- }
- }
-
- /**
- * Adds a task.
- *
- * @param task the task to add
- */
- public synchronized void addTask(VSTask task) {
- addTask(task, VSTaskManager.ONLY_ONCE);
- }
-
- /**
- * Adds a task.
- *
- * @param task the task to add
- * @param isProgrammed true, if the task is programmed
- */
- public synchronized void addTask(VSTask task, boolean isProgrammed) {
- task.isProgrammed(isProgrammed);
- insert(task);
- }
-
- /**
- * Removes a task.
- *
- * @param task the task to remove
- *
- * @return true, if the task has been removed with success
- */
- public synchronized boolean removeTask(VSTask task) {
- if (fullfilledProgrammedTasks.remove(task)) {
- return true;
-
- } else if (task.isGlobalTimed() && globalTasks.remove(task)) {
- return true;
-
- } else if (!task.isGlobalTimed()) {
- if (task.getProcess().getTasks().remove(task))
- return true;
- }
-
- return false;
- }
-
- /**
- * Removes several tasks.
- *
- * @param tasks the tasks to remove
- */
- public synchronized void removeAllTasks(ArrayList<VSTask> tasks) {
- for (VSTask task : tasks)
- removeTask(task);
- }
-
- /**
- * Removes the tasks of the specified process.
- *
- * @param process the process to remove the tasks of
- */
- public synchronized void removeTasksOf(VSInternalProcess process) {
- ArrayList<VSTask> removeThose = new ArrayList<VSTask>();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (task.isProcess(process))
- removeThose.add(task);
-
- for (VSTask task : removeThose)
- fullfilledProgrammedTasks.remove(task);
-
- removeThose.clear();
-
- for (VSTask task : globalTasks)
- if (task.isProcess(process))
- removeThose.add(task);
-
- for (VSTask task : removeThose)
- globalTasks.remove(task);
-
- process.getTasks().clear();
- }
-
- /**
- * Gets the local timed tasks.
- *
- * @return the local timed tasks
- */
- public synchronized ArrayList<VSTask> getLocalTasks() {
- ArrayList<VSTask> localTasks = new ArrayList<VSTask>();
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (!task.isGlobalTimed())
- localTasks.add(task);
-
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- VSPriorityQueue<VSTask> tasks = process.getTasks();
- for (VSTask task : tasks)
- localTasks.add(task);
- }
- }
-
- return localTasks;
- }
-
- /**
- * Gets the global timed tasks.
- *
- * @return the global timed tasks
- */
- public synchronized ArrayList<VSTask> getGlobalTasks() {
- ArrayList<VSTask> globalTasks = new ArrayList<VSTask>();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (task.isGlobalTimed())
- globalTasks.add(task);
-
- for (VSTask task : this.globalTasks)
- if (task.isProgrammed())
- globalTasks.add(task);
-
- return globalTasks;
- }
-
- /**
- * Gets the local timed tasks of a specific process.
- *
- * @param process the process to get the local timed tasks of
- *
- * @return the local tasks of the specified process
- */
- public synchronized ArrayList<VSTask> getProcessLocalTasks(
- VSInternalProcess process) {
- ArrayList<VSTask> processTasks = new ArrayList<VSTask>();
- VSPriorityQueue<VSTask> tasks = process.getTasks();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (!task.isGlobalTimed() && task.isProcess(process) &&
- task.isProgrammed())
- processTasks.add(task);
-
- for (VSTask task : tasks)
- if (task.isProgrammed())
- processTasks.add(task);
-
- return processTasks;
- }
-
- /**
- * Gets the global timed tasks of a specific process.
- *
- * @param process the process to get the local timed tasks of
- *
- * @return the global timed tasks of the specified process
- */
- public synchronized ArrayList<VSTask> getProcessGlobalTasks(
- VSInternalProcess process) {
- ArrayList<VSTask> processTasks = new ArrayList<VSTask>();
-
- for (VSTask task : fullfilledProgrammedTasks)
- if (task.isGlobalTimed() && task.isProcess(process) &&
- task.isProgrammed())
- processTasks.add(task);
-
- for (VSTask task : globalTasks)
- if (task.isProcess(process) && task.isProgrammed())
- processTasks.add(task);
-
- return processTasks;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- public synchronized String toString() {
- StringBuffer buffer = new StringBuffer();
-
- buffer.append(prefs.getString("lang.en.task.manager"));
- buffer.append(" (");
- buffer.append(prefs.getString("lang.en.tasks.fullfilled"));
- buffer.append(": ");
-
- for (VSTask task : fullfilledProgrammedTasks) {
- buffer.append(task);
- buffer.append("; ");
- }
-
- buffer.append(prefs.getString("lang.en.tasks.global"));
- buffer.append(": ");
-
- for (VSTask task : globalTasks) {
- buffer.append(task);
- buffer.append("; ");
- }
-
- buffer.append(prefs.getString("lang.en.tasks.local"));
- buffer.append(": ");
-
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- VSPriorityQueue<VSTask> tasks = process.getTasks();
- for (VSTask task : tasks) {
- buffer.append(task);
- buffer.append("; ");
- }
- }
- }
-
- String descr = buffer.toString();
-
- if (descr.endsWith("; "))
- return descr.substring(0, descr.length()-2) + ")";
-
- return descr + ")";
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- ArrayList<VSTask> serializeThoseTasks = new ArrayList<VSTask>();
-
- for (VSTask task : fullfilledProgrammedTasks) {
- if (!task.hasNotSerializableEvent())
- serializeThoseTasks.add(task);
- }
-
- for (VSTask task : globalTasks) {
- if (!task.hasNotSerializableEvent())
- serializeThoseTasks.add(task);
- }
-
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
-
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- VSPriorityQueue<VSTask> localTasks = process.getTasks();
- for (VSTask task : localTasks) {
- if (!task.hasNotSerializableEvent())
- serializeThoseTasks.add(task);
- }
- }
- }
-
- objectOutputStream.writeObject(
- new Integer(serializeThoseTasks.size()));
- for (VSTask task : serializeThoseTasks)
- task.serialize(serialize, objectOutputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSTaskManager");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- globalTasks.clear();
-
- ArrayList<VSInternalProcess> processes =
- simulatorVisualization.getProcesses();
- synchronized (processes) {
- for (VSInternalProcess process : processes)
- process.getTasks().clear();
- }
-
- int numTasks = ((Integer) objectInputStream.readObject()).intValue();
-
- if (VSSerialize.DEBUG)
- System.out.println("Num of tasks: " + numTasks);
-
- for (int i = 0; i < numTasks; ++i) {
- VSTask task = new VSTask(serialize, objectInputStream);
- addTask(task, task.isProgrammed());
- }
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-}
diff --git a/sources/core/time/VSLamportTime.java b/sources/core/time/VSLamportTime.java
deleted file mode 100644
index 165adfc..0000000
--- a/sources/core/time/VSLamportTime.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package core.time;
-
-/**
- * The class VSLamportTime, defines how the lamport timestamps are represented.
- *
- * @author Paul C. Buetow
- */
-public class VSLamportTime implements VSTime {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** Specified the global time of the lamport timestamp. It's used for
- * correct painting position in the simulator canvas paint area.
- */
- private long globalTime;
-
- /** Specified the process' local lamport time. */
- private long lamportTime;
-
- /**
- * A simple constructor.
- *
- * @param globalTime The global time.
- * @param lamportTime The local lamport time.
- */
- public VSLamportTime(long globalTime, long lamportTime) {
- this.globalTime = globalTime;
- this.lamportTime = lamportTime;
- }
-
- /* (non-Javadoc)
- * @see core.time.VSTime#getGlobalTime()
- */
- public long getGlobalTime() {
- return globalTime;
- }
-
- /**
- * Gets the lamport time.
- *
- * @return The process' local lamport time
- */
- public long getLamportTime() {
- return lamportTime;
- }
-
- /* (non-Javadoc)
- * @see core.time.VSTime#toString()
- */
- public String toString() {
- return "(" + lamportTime + ")";
- }
-}
diff --git a/sources/core/time/VSTime.java b/sources/core/time/VSTime.java
deleted file mode 100644
index 3142d6b..0000000
--- a/sources/core/time/VSTime.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package core.time;
-
-/**
- * This interface is a guidline for general time format classes.
- *
- * @author Paul C. Buetow
- */
-public interface VSTime {
- /**
- * Gets the global time.
- *
- * @return The global time
- */
- public long getGlobalTime();
-
- /**
- * Returns a string representation.
- *
- * @return The representation of the implementing object as a string
- */
- public String toString();
-}
diff --git a/sources/core/time/VSVectorTime.java b/sources/core/time/VSVectorTime.java
deleted file mode 100644
index ebd5438..0000000
--- a/sources/core/time/VSVectorTime.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package core.time;
-
-import java.util.ArrayList;
-
-/**
- * The class VSVectorTime, defined how the vector timestamps are represented.
- *
- * @author Paul C. Buetow
- */
-public class VSVectorTime extends ArrayList<Long> implements VSTime {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The global time. */
- private long globalTime;
-
- /**
- * Instantiates a new vector time.
- *
- * @param globalTime the global time
- */
- public VSVectorTime(long globalTime) {
- this.globalTime = globalTime;
- }
-
- /**
- * To long array.
- *
- * @return the long[]
- */
- public long[] toLongArray() {
- final int size = super.size();
- final long[] arr = new long[size];
-
- for (int i = 0; i < size; ++i)
- arr[i] = super.get(i).longValue();
-
- return arr;
- }
-
- /**
- * Sets the global time.
- *
- * @param globalTime the new global time
- */
- public void setGlobalTime(long globalTime) {
- this.globalTime = globalTime;
- }
-
- /* (non-Javadoc)
- * @see core.time.VSTime#getGlobalTime()
- */
- public long getGlobalTime() {
- return globalTime;
- }
-
- /**
- * Gets the copy.
- *
- * @return the copy
- */
- public VSVectorTime getCopy() {
- final VSVectorTime vectorTime = new VSVectorTime(globalTime);
- final int size = super.size();
-
- for (int i = 0; i < size; ++i)
- vectorTime.add(super.get(i));
-
- return vectorTime;
- }
-
- /* (non-Javadoc)
- * @see java.util.AbstractCollection#toString()
- */
- public String toString() {
- final int size = super.size();
- final StringBuffer buffer = new StringBuffer();
- buffer.append("(");
-
- for (int i = 0; i < size-1; ++i)
- buffer.append(super.get(i)+",");
- buffer.append(super.get(size-1)+")");
-
- return buffer.toString();
- }
-
- /* (non-Javadoc)
- * @see java.util.ArrayList#get(int)
- */
- public Long get(int index) {
- if (index >= super.size())
- return new Long(0);
-
- return super.get(index);
- }
-}
diff --git a/sources/events/VSAbstractEvent.java b/sources/events/VSAbstractEvent.java
deleted file mode 100644
index ac9a61f..0000000
--- a/sources/events/VSAbstractEvent.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 - 2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events;
-
-import java.io.*;
-
-import core.VSAbstractProcess;
-import core.VSInternalProcess;
-import exceptions.*;
-import prefs.*;
-import serialize.*;
-
-/**
- * The class VSAbstractEvent. This abstract class defines the basic framework
- * of each event. an event is used to fullfill a specific task. An event object
- * will get stored in a VSTask object.
- *
- * @author Paul C. Buetow
- */
-abstract public class VSAbstractEvent extends VSSerializablePrefs {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The prefs. */
- public VSPrefs prefs;
-
- /** The process. */
- public VSAbstractProcess process;
-
- /** The event shortname. */
- private String eventShortname;
-
- /** The event classname. */
- private String eventClassname;
-
- /**
- * Creates a copy of the event and using a new process.
- *
- * @param theProcess The new process
- * @return The copy
- */
- final public VSAbstractEvent getCopy(VSInternalProcess theProcess)
- throws VSEventNotCopyableException {
-
- if (theProcess == null)
- theProcess = (VSInternalProcess) process;
-
- if (!(this instanceof VSCopyableEvent))
- throw new VSEventNotCopyableException(
- eventShortname + " (" + eventClassname + ")");
-
- VSAbstractEvent copy =
- VSRegisteredEvents.createEventInstanceByClassname(
- eventClassname, theProcess);
-
- ((VSCopyableEvent) this).initCopy(copy);
- copy.setShortname(eventShortname);
-
- return copy;
- }
-
- /**
- * Creates a copy of the event.
- *
- * @return The copy
- */
- final public VSAbstractEvent getCopy() throws VSEventNotCopyableException {
- return getCopy(null);
- }
-
- /**
- * Inits the event.
- *
- * @param process the process
- */
- public void init(VSInternalProcess process) {
- if (this.process == null) {
- this.process = process;
- this.prefs = process.getPrefs();
- init();
- }
- }
-
- /**
- * Inits the event without setting the processes and prefs variables
- * of the object.
- */
- public void init() {
- onInit();
- }
-
- /**
- * Sets the classname.
- *
- * @param eventClassname the new classname
- */
- public final void setClassname(String eventClassname) {
- if (eventClassname.startsWith("class "))
- eventClassname = eventClassname.substring(6);
-
- this.eventClassname = eventClassname;
- }
-
- /**
- * Gets the classname.
- *
- * @return the classname
- */
- public String getClassname() {
- return eventClassname;
- }
-
- /**
- * Gets the name.
- *
- * @return the name
- */
- public String getName() {
- return VSRegisteredEvents.getNameByClassname(eventClassname);
- }
-
- /**
- * Sets the shortname.
- *
- * @param eventShortname the new shortname
- */
- public void setShortname(String eventShortname) {
- this.eventShortname = eventShortname;
- }
-
- /**
- * Gets the shortname.
- *
- * @return the shortname
- */
- public String getShortname() {
- if (eventShortname == null)
- return VSRegisteredEvents.getShortnameByClassname(eventClassname);
-
- return eventShortname;
- }
-
- /**
- * Gets the process.
- *
- * @return the process
- */
- public VSAbstractProcess getProcess() {
- return process;
- }
-
- /**
- * Logg a specific message.
- *
- * @param message the loging message
- */
- public void log(String message) {
- process.log(/*toString() + "; " + */message);
- }
-
- /**
- * Checks if the event equals to another event..
- *
- * @param event the event to compare against.
- *
- * @return true, if the events are the same (have the same event id)
- */
- public boolean equals(VSAbstractEvent event) {
- return super.getID() == event.getID();
- }
-
- /**
- * Every event has its own initialize method.
- */
- abstract public void onInit();
-
- /**
- * Every event can get started. This method get's executed if the event
- * takes place.
- */
- abstract public void onStart();
-
- /**
- * Every event has to be able to set its own shortname
- *
- * @param shortName The saved short name. May be overwritten due wrong lang
- *
- * @return The event's shortname
- */
- abstract protected String createShortname(String savedShortname);
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- super.serialize(serialize, objectOutputStream);
-
- if (VSSerialize.DEBUG)
- System.out.println("Serializing: VSAbstractEvent; id="+getID());
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- objectOutputStream.writeObject(new Integer(super.getID()));
- objectOutputStream.writeObject(eventShortname);
- objectOutputStream.writeObject(eventClassname);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- super.deserialize(serialize, objectInputStream);
-
- if (VSSerialize.DEBUG)
- System.out.print("Deserializing: VSAbstractEvent ");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- int id = ((Integer) objectInputStream.readObject()).intValue();
- String savedEventShortname = (String) objectInputStream.readObject();
- this.eventClassname = (String) objectInputStream.readObject();
- this.eventShortname = createShortname(savedEventShortname);
-
- if (VSSerialize.DEBUG)
- System.out.println(eventClassname);
-
- serialize.setObject(id, "event", this);
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-}
diff --git a/sources/events/VSCopyableEvent.java b/sources/events/VSCopyableEvent.java
deleted file mode 100644
index 0ad6b24..0000000
--- a/sources/events/VSCopyableEvent.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events;
-
-
-/**
- * The interface VSCopyableEvent, all events which implement this class
- * are copyable.
- *
- * @author Paul C. Buetow
- */
-public interface VSCopyableEvent {
- /**
- * Fills a copy of this event with its values
- *
- * @param copy The copy
- */
- public void initCopy(VSAbstractEvent copy);
-}
diff --git a/sources/events/VSRegisteredEvents.java b/sources/events/VSRegisteredEvents.java
deleted file mode 100644
index 9d022d9..0000000
--- a/sources/events/VSRegisteredEvents.java
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events;
-
-import java.util.*;
-
-import prefs.*;
-import core.*;
-import utils.*;
-
-/**
- * The class VSRegisteredEvents. This class is responsible to manage all
- * events. It manages the event classnames, the event shortnames and the event
- * names. It also checks if a protocol (which is an event as well) has
- * variables which are editable through the GUI of the simulator.
- *
- * @author Paul C. Buetow
- */
-public final class VSRegisteredEvents {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The event classnames by eventnames. */
- private static HashMap<String,String> eventClassnamesByNames =
- new HashMap<String,String>();
-
- /** The event shortnames by classnames. */
- private static HashMap<String,String> eventShortnamesByClassnames =
- new HashMap<String,String>();
-
- /** The event names by classnames. */
- private static HashMap<String,String> eventNamesByClassnames =
- new HashMap<String,String>();
-
- /** The event classnames by shortnames. */
- private static HashMap<String,String> eventClassnamesByShortnames =
- new HashMap<String,String>();
-
- /** The editable protocols classnames. */
- private static ArrayList<String> editableProtocolsClassnames =
- new ArrayList<String>();
-
- private static HashMap<String,ArrayList<String>> clientVariables =
- new HashMap<String,ArrayList<String>>();
-
- private static HashMap<String,ArrayList<String>> serverVariables =
- new HashMap<String,ArrayList<String>>();
-
- private static HashMap<String,Boolean> isOnServerStartProtocol =
- new HashMap<String,Boolean>();
-
- /** The prefs. */
- private static VSPrefs prefs;
-
- /**
- * Registers available events.
- *
- * @param prefs_ the prefs_
- */
- public static void init(VSPrefs prefs_) {
- prefs = prefs_;
-
- /*
- registerEvent("events.implementations.VSProcessCrashEvent",
- "Prozessabsturz");
- registerEvent("events.implementations.VSProcessRecoverEvent",
- "Prozesswiederbelebung");
- registerEvent("protocols.implementations.VSBasicMulticastProtocol",
- "Basic Multicast", "Basic Multicast");
- registerEvent("protocols.implementations.VSBerkelyTimeProtocol",
- "Berkeley Algorithmus zur internen Sync.", "Berkeley");
- registerEvent("protocols.implementations.VSBroadcastProtocol",
- "Broadcast");
- registerEvent("protocols.implementations.VSDummyProtocol",
- "Beispiel/Dummy");
- registerEvent("protocols.implementations.VSExternalTimeSyncProtocol",
- "Christians Methode zur externen Sync.", "Christians");
- registerEvent("protocols.implementations.VSInternalTimeSyncProtocol",
- "Interne Synchronisation", "Interne Sync.");
- registerEvent("protocols.implementations.VSOnePhaseCommitProtocol",
- "Ein-Phasen Commit", "1-Phasen Commit");
- registerEvent("protocols.implementations.VSPingPongProtocol",
- "Ping Pong");
- registerEvent("protocols.implementations.VSReliableMulticastProtocol",
- "Reliable Multicast", "Reliable Multicast");
- registerEvent("protocols.implementations.VSTwoPhaseCommitProtocol",
- "Zwei-Phasen Commit", "2-Phasen Commit");
- */
-
- /* Using the NEW way. The old way above (specifying protocol names
- in this file still works as well */
-
- registerEvent("events.implementations.VSProcessCrashEvent");
- registerEvent("events.implementations.VSProcessRecoverEvent");
- registerEvent("protocols.implementations.VSBasicMulticastProtocol");
- registerEvent("protocols.implementations.VSBerkelyTimeProtocol");
- registerEvent("protocols.implementations.VSBroadcastProtocol");
- registerEvent("protocols.implementations.VSDummyProtocol");
- registerEvent("protocols.implementations.VSExternalTimeSyncProtocol");
- registerEvent("protocols.implementations.VSInternalTimeSyncProtocol");
- registerEvent("protocols.implementations.VSOnePhaseCommitProtocol");
- registerEvent("protocols.implementations.VSPingPongProtocol");
- registerEvent("protocols.implementations.VSReliableMulticastProtocol");
- registerEvent("protocols.implementations.VSTwoPhaseCommitProtocol");
-
- /* Make dummy objects of each protocol, to see if they contain VSPrefs
- values to edit */
- Vector<String> protocolClassnames = getProtocolClassnames();
- VSClassLoader classLoader = new VSClassLoader();
-
- for (String protocolClassname : protocolClassnames) {
- Object serverObject = classLoader.newInstance(protocolClassname);
- Object clientObject = classLoader.newInstance(protocolClassname);
-
- if (clientObject instanceof protocols.VSAbstractProtocol &&
- serverObject instanceof protocols.VSAbstractProtocol) {
-
- protocols.VSAbstractProtocol serverProtocol =
- (protocols.VSAbstractProtocol) serverObject;
- protocols.VSAbstractProtocol clientProtocol =
- (protocols.VSAbstractProtocol) clientObject;
-
- serverProtocol.onServerInit();
- clientProtocol.onClientInit();
-
- if (!serverProtocol.isEmpty() || !clientProtocol.isEmpty())
- editableProtocolsClassnames.add(protocolClassname);
-
- if (!serverProtocol.isEmpty()) {
- ArrayList<String> variables = new ArrayList<String>();
- variables.addAll(serverProtocol.getAllFullKeys());
- serverVariables.put(protocolClassname, variables);
- }
-
- if (!clientProtocol.isEmpty()) {
- ArrayList<String> variables = new ArrayList<String>();
- variables.addAll(clientProtocol.getAllFullKeys());
- clientVariables.put(protocolClassname, variables);
- }
-
- if (serverProtocol.hasOnServerStart())
- isOnServerStartProtocol.put(protocolClassname,
- new Boolean(true));
- }
- }
- }
-
- /**
- * Gets the editable protocols classnames.
- *
- * @return the editable protocols classnames
- */
- public static ArrayList<String> getEditableProtocolsClassnames() {
- return editableProtocolsClassnames;
- }
-
- /**
- * Gets the protocols server variable names.
- *
- * @return The variable names
- */
- public static ArrayList<String> getProtocolServerVariables(
- String protocolClassname) {
- return serverVariables.get(protocolClassname);
- }
-
- /**
- * Gets the protocols server variable names.
- *
- * @return The variable names
- */
- public static ArrayList<String> getProtocolClientVariables(
- String protocolClassname) {
- return clientVariables.get(protocolClassname);
- }
-
- /**
- * Gets the protocol names.
- *
- * @return the protocol names
- */
- public static Vector<String> getProtocolNames() {
- Set<String> set = eventClassnamesByNames.keySet();
- Vector<String> vector = new Vector<String>();
-
- for (String eventName : set)
- if (getClassnameByEventname(eventName).startsWith(
- "protocols.implementations"))
- vector.add(eventName);
-
- Collections.sort(vector);
-
- return vector;
- }
-
- /**
- * Gets the protocol classnames.
- *
- * @return the protocol classnames
- */
- public static Vector<String> getProtocolClassnames() {
- ArrayList<String> shortnames = new ArrayList<String>();
- shortnames.addAll(eventClassnamesByShortnames.keySet());
- Collections.sort(shortnames);
- Vector<String> vector = new Vector<String>();
-
- for (String eventShortname : shortnames) {
- String eventClassname = getClassnameByShortname(eventShortname);
- if (eventClassname.startsWith("protocols.implementations"))
- vector.add(eventClassname);
- }
-
- return vector;
- }
-
- /**
- * Gets the non protocol names.
- *
- * @return the non protocol names
- */
- public static Vector<String> getNonProtocolNames() {
- Set<String> set = eventClassnamesByNames.keySet();
- Vector<String> vector = new Vector<String>();
-
- for (String eventName : set)
- if (getClassnameByEventname(eventName).startsWith(
- "events.implementations"))
- vector.add(eventName);
-
- Collections.sort(vector);
-
- return vector;
- }
-
- /**
- * Gets the non protocol classnames.
- *
- * @return the non protocol classnames
- */
- public static Vector<String> getNonProtocolClassnames() {
- Set<String> set = eventNamesByClassnames.keySet();
- Vector<String> vector = new Vector<String>();
-
- for (String eventClassname : set)
- if (eventClassname.startsWith("events.implementations"))
- vector.add(eventClassname);
-
- Collections.sort(vector);
-
- return vector;
- }
-
- /**
- * Gets the classname.
- *
- * @param eventName the event name
- *
- * @return the classname
- */
- public static String getClassnameByEventname(String eventName) {
- return eventClassnamesByNames.get(eventName);
- }
-
- /**
- * Gets the name.
- *
- * @param eventClassname the event classname
- *
- * @return the name
- */
- public static String getNameByClassname(String eventClassname) {
- return eventNamesByClassnames.get(eventClassname);
- }
-
- /**
- * Gets the shortname.
- *
- * @param eventClassname the event classname
- *
- * @return the shortname
- */
- public static String getShortnameByClassname(String eventClassname) {
- return eventShortnamesByClassnames.get(eventClassname);
- }
-
- /**
- * Gets the classname.
- *
- * @param eventShortname the event shortname
- *
- * @return the shortname
- */
- public static String getClassnameByShortname(String eventShortname) {
- return eventClassnamesByShortnames.get(eventShortname);
- }
-
- /**
- * Checks if the protocol uses onServerStart or onClientStart
- *
- * @param protocolClassname the protocol's classname
- *
- * @return true if onServerStart, false if onClientStart
- */
- public static boolean isOnServerStartProtocol(String protocolClassname) {
- if (isOnServerStartProtocol.containsKey(protocolClassname)) {
- Boolean bool = isOnServerStartProtocol.get(protocolClassname);
- return bool.booleanValue();
- }
-
- return false;
- }
-
- /**
- * Creates the event instance by classname.
- *
- * @param eventClassname the event classname
- * @param process the process
- *
- * @return An instance of the event classname, if exists. Else null.
- */
- public static VSAbstractEvent createEventInstanceByClassname(
- String eventClassname, VSInternalProcess process) {
- Object protocolObj = new VSClassLoader().newInstance(eventClassname);
-
- if (protocolObj instanceof VSAbstractEvent) {
- VSAbstractEvent event = (VSAbstractEvent) protocolObj;
- event.init(process);
- return event;
- }
-
- return null;
- }
-
- /**
- * Creates the event instance by name.
- *
- * @param eventName the event name
- * @param process the process
- *
- * @return An instance of the event, if exists. Else null.
- */
- public static VSAbstractEvent createEventInstanceByName(String eventName,
- VSInternalProcess process) {
- return createEventInstanceByClassname(
- eventClassnamesByNames.get(eventName), process);
- }
-
- /**
- * Registers an event. Use the language settings of VSPrefs.
- *
- * @param eventClassname the event classname
- */
- private static void registerEvent(String eventClassname) {
- String eventName =
- prefs.getString("lang.en." + eventClassname);
- String eventShortname =
- prefs.getString("lang.en." + eventClassname + ".short");
- registerEvent(eventClassname, eventName, eventShortname);
- }
-
- /**
- * Registers an event.
- *
- * @param eventClassname the event classname
- * @param eventName the event name
- */
- private static void registerEvent(String eventClassname, String eventName) {
- registerEvent(eventClassname, eventName, null);
- }
-
- /**
- * Registers an event.
- *
- * @param eventClassname the event classname
- * @param eventName the event name
- * @param eventShortname the event shortname
- */
- private static void registerEvent(String eventClassname, String eventName,
- String eventShortname) {
- if (eventShortname == null)
- eventShortname = eventName;
-
- eventNamesByClassnames.put(eventClassname, eventName);
- eventShortnamesByClassnames.put(eventClassname, eventShortname);
- eventClassnamesByNames.put(eventName, eventClassname);
- eventClassnamesByShortnames.put(eventShortname, eventClassname);
- }
-}
diff --git a/sources/events/implementations/VSProcessCrashEvent.java b/sources/events/implementations/VSProcessCrashEvent.java
deleted file mode 100644
index 382906b..0000000
--- a/sources/events/implementations/VSProcessCrashEvent.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 - 2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events.implementations;
-
-import events.*;
-import simulator.*;
-
-/**
- * The class VSProcessCrashEvent. This event makes a process to crash.
- *
- * @author Paul C. Buetow
- */
-public class VSProcessCrashEvent extends VSAbstractEvent
- implements VSCopyableEvent {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /* (non-Javadoc)
- * @see events.VSCopyableEvent#initCopy(events.VSAbstractEvent)
- */
- public void initCopy(VSAbstractEvent copy) {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onInit()
- */
- public void onInit() {
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#createShortname()()
- */
- protected String createShortname(String savedShortname) {
- return VSMain.prefs.getString("lang.en.process.crash");
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onStart()
- */
- public void onStart() {
- if (!process.isCrashed()) {
- process.isCrashed(true);
- log(prefs.getString("lang.en.crashed"));
- }
- }
-}
diff --git a/sources/events/implementations/VSProcessRecoverEvent.java b/sources/events/implementations/VSProcessRecoverEvent.java
deleted file mode 100644
index e7c87db..0000000
--- a/sources/events/implementations/VSProcessRecoverEvent.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 - 2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events.implementations;
-
-import events.*;
-import simulator.*;
-
-/**
- * The class VSProcessRecoverEvent. This event makes a process to recover if
- * it is crashed.
- *
- * @author Paul C. Buetow
- */
-public class VSProcessRecoverEvent extends VSAbstractEvent
- implements VSCopyableEvent {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /* (non-Javadoc)
- * @see events.VSCopyableEvent#initCopy(events.VSAbstractEvent)
- */
- public void initCopy(VSAbstractEvent copy) {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onInit()
- */
- public void onInit() {
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#createShortname()()
- */
- protected String createShortname(String savedShortname) {
- return VSMain.prefs.getString("lang.en.process.recover");
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onStart()
- */
- public void onStart() {
- if (process.isCrashed()) {
- process.isCrashed(false);
- log(prefs.getString("lang.en.recovered"));
- }
- }
-}
diff --git a/sources/events/internal/VSAbstractInternalEvent.java b/sources/events/internal/VSAbstractInternalEvent.java
deleted file mode 100644
index ae0e2b8..0000000
--- a/sources/events/internal/VSAbstractInternalEvent.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 - 2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events.internal;
-
-import java.io.*;
-
-import events.VSAbstractEvent;
-import serialize.VSSerialize;
-
-/**
- * The class VSAbstractInternalEvent, this class if for destinguishing between
- * internal and non-internal events. Internal usage only.
- *
- * @author Paul C. Buetow
- */
-abstract public class VSAbstractInternalEvent extends VSAbstractEvent {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#createShortname()()
- */
- protected String createShortname(String savedShortname) {
- return savedShortname;
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- super.serialize(serialize, objectOutputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- super.deserialize(serialize, objectInputStream);
-
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSAbstractInternalEvent");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-}
diff --git a/sources/events/internal/VSMessageReceiveEvent.java b/sources/events/internal/VSMessageReceiveEvent.java
deleted file mode 100644
index ab8c929..0000000
--- a/sources/events/internal/VSMessageReceiveEvent.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events.internal;
-
-//import java.io.*;
-
-import core.VSMessage;
-import protocols.VSAbstractProtocol;
-import serialize.VSNotSerializable;
-
-/**
- * The class VSMessageReceiveEvent, this event is used if a process receives
- * a message.
- *
- * @author Paul C. Buetow
- */
-public class VSMessageReceiveEvent extends VSAbstractInternalEvent
- implements VSNotSerializable {
- /** The serioal version uid */
- private static final long serialVersionUID = 1L;
-
- /** The message. */
- private VSMessage message;
-
- /**
- * Instantiates a new message receive event.
- *
- * @param message the message
- */
- public VSMessageReceiveEvent(VSMessage message) {
- this.message = message;
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onInit()
- */
- public void onInit() {
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onStart()
- */
- public void onStart() {
- boolean onlyRelevantMessages = process.getPrefs().getBoolean(
- "sim.messages.relevant");
-
- //String eventName = message.getName();
- String protocolClassname = message.getProtocolClassname();
-
- if (onlyRelevantMessages && !isRelevantMessage())
- return;
-
- Object protocolObj = null;
-
- if (process.objectExists(protocolClassname))
- protocolObj = process.getObject(protocolClassname);
-
- process.updateLamportTime(message.getLamportTime()+1);
- process.updateVectorTime(message.getVectorTime());
-
- StringBuffer buffer = new StringBuffer();
- buffer.append(prefs.getString("lang.en.message.recv"));
- buffer.append("; ");
- buffer.append(message);;
- log(buffer.toString());
-
- if (protocolObj != null)
- ((VSAbstractProtocol) protocolObj).onMessageRecvStart(message);
- }
-
- /**
- * Checks if the message delivering is relevant.
- *
- * @return true, if relevant
- */
- public boolean isRelevantMessage() {
- String protocolClassname = message.getProtocolClassname();
- Object protocolObj = null;
-
- if (process.objectExists(protocolClassname))
- protocolObj = process.getObject(protocolClassname);
- else
- return false;
-
- if (!((VSAbstractProtocol) protocolObj).isRelevantMessage(message))
- return false;
-
- return true;
- }
-}
diff --git a/sources/events/internal/VSProtocolEvent.java b/sources/events/internal/VSProtocolEvent.java
deleted file mode 100644
index 92af81e..0000000
--- a/sources/events/internal/VSProtocolEvent.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 - 2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events.internal;
-
-import java.io.*;
-
-import core.VSInternalProcess;
-import events.*;
-import protocols.VSAbstractProtocol;
-import serialize.VSSerialize;
-
-/**
- * The class VSProtocolEvent, this event is used if a protocol (server or
- * client part) of a process gets enabled or disabled, an object of this class
- * can be for 4 different purporses! Activation of the client protocol,
- * deactivation of the client protocol, activation of the server protocol,
- * deactivation of the server protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSProtocolEvent extends VSAbstractInternalEvent
- implements VSCopyableEvent {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The protocol classname. */
- private String protocolClassname;
-
- /** The event is a client protocol if true. Else it is a server protocol */
- private boolean isClientProtocol;
-
- /** The event is a protocol activation if true. Else it is a deactivation */
- private boolean isProtocolActivation;
-
- /* (non-Javadoc)
- * @see events.VSCopyableEvent#initCopy(events.VSAbstractEvent)
- */
- public void initCopy(VSAbstractEvent copy) {
- VSProtocolEvent protocolEventCopy = (VSProtocolEvent) copy;
- protocolEventCopy.isClientProtocol(isClientProtocol);
- protocolEventCopy.isProtocolActivation(isProtocolActivation);
- protocolEventCopy.setProtocolClassname(protocolClassname);
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onInit()
- */
- public void onInit() {
- setClassname(getClass().toString());
- }
-
- /**
- * Sets if it is a client protocol activation/deactivation.
- *
- * @param isClientProtocol the event is client protocol if true. the event
- * is a server protocol if false.
- */
- public void isClientProtocol(boolean isClientProtocol) {
- this.isClientProtocol = isClientProtocol;
- }
-
- /**
- * Checks if it is a client protocol activation/deactivation.
- *
- * @return the event is client protocol if true. the event
- * is a server protocol if false.
- */
- public boolean isClientProtocol() {
- return isClientProtocol;
- }
-
- /**
- * Sets if it is protocol activation.
- *
- * @param isProtocolActivation true, if it is a protocol activation. false,
- * if it is a protocol deactivation.
- */
- public void isProtocolActivation(boolean isProtocolActivation) {
- this.isProtocolActivation = isProtocolActivation;
- }
-
- /**
- * Checks if it is protocol activation.
- *
- * @return true, if it is a protocol activation. false, if it is a protocol
- * deactivation.
- */
- public boolean isProtocolActivation() {
- return isProtocolActivation;
- }
-
- /**
- * Sets the protocol classname.
- *
- * @param protocolClassname the new protocol classname
- */
- public void setProtocolClassname(String protocolClassname) {
- this.protocolClassname = protocolClassname;
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onStart()
- */
- public void onStart() {
- VSInternalProcess internalProcess = (VSInternalProcess) process;
- VSAbstractProtocol protocol =
- internalProcess.getProtocolObject(protocolClassname);
-
- if (isClientProtocol)
- protocol.isClient(isProtocolActivation);
- else
- protocol.isServer(isProtocolActivation);
-
- StringBuffer buffer = new StringBuffer();
- buffer.append(VSRegisteredEvents.getShortnameByClassname(
- protocolClassname));
-
- buffer.append(" ");
- buffer.append(isClientProtocol
- ? prefs.getString("lang.en.client")
- : prefs.getString("lang.en.server"));
-
- buffer.append(" ");
- buffer.append(isProtocolActivation
- ? prefs.getString("lang.en.activated")
- : prefs.getString("lang.en.deactivated"));
-
- log(buffer.toString());
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- super.serialize(serialize, objectOutputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- objectOutputStream.writeObject(protocolClassname);
- objectOutputStream.writeObject(new Boolean(isClientProtocol));
- objectOutputStream.writeObject(new Boolean(isProtocolActivation));
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- super.deserialize(serialize, objectInputStream);
-
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSProtocolEvent");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- protocolClassname = (String) objectInputStream.readObject();
-
- isClientProtocol = ((Boolean)
- objectInputStream.readObject()).booleanValue();;
- isProtocolActivation = ((Boolean)
- objectInputStream.readObject()).booleanValue();;
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-}
diff --git a/sources/events/internal/VSProtocolScheduleEvent.java b/sources/events/internal/VSProtocolScheduleEvent.java
deleted file mode 100644
index 83b5505..0000000
--- a/sources/events/internal/VSProtocolScheduleEvent.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package events.internal;
-
-import java.io.*;
-
-//import events.*;
-import protocols.VSAbstractProtocol;
-import serialize.*;
-
-/**
- * The class VSProtocolScheduleEvent, this event is used if a protocol (which
- * is a subclass of VSAbstractProtocol) reschedules itself to run again on a
- * specific time.
- *
- * @author Paul C. Buetow
- */
-public class VSProtocolScheduleEvent extends VSAbstractInternalEvent
- implements VSNotSerializable {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The event is a server protocol schedule. */
- private boolean isServerSchedule; /* true = server, false = client */
-
- /** The reference to the protocol object to schedule. */
- private VSAbstractProtocol protocol;
-
- /**
- * Create a VSProtocolScheduleEvent object
- *
- * @param protocol the protocol
- * @param isServerSchedule the event is a client protocol schedule if
- * false, else server schedule
- */
- public VSProtocolScheduleEvent(VSAbstractProtocol protocol,
- boolean isServerSchedule) {
- this.protocol = protocol;
- this.isServerSchedule = isServerSchedule;
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onInit()
- */
- public void onInit() {
- setClassname(getClass().toString());
- }
-
- /**
- * Sets if it is client protocol schedule.
- *
- * @param isServerSchedule false, if the event is a client protocol
- * schedule. true, if server.
- */
- public void isServerSchedule(boolean isServerSchedule) {
- this.isServerSchedule = isServerSchedule;
- }
-
- /**
- * Sets if it is client protocol schedule.
- *
- * @return false, if the event is a client protocol schedule. true, if
- * server.
- */
- public boolean isServerSchedule() {
- return isServerSchedule;
- }
-
- /**
- * Sets the protocol.
- *
- * @param protocol the protocol
- */
- public void setProtocol(VSAbstractProtocol protocol) {
- this.protocol = protocol;
- }
-
- /**
- * Gets the protocol.
- *
- * @return the protocol
- */
- public VSAbstractProtocol getProtocol() {
- return protocol;
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onStart()
- */
- public void onStart() {
- if (isServerSchedule)
- protocol.onServerScheduleStart();
- else
- protocol.onClientScheduleStart();
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- super.serialize(serialize, objectOutputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- super.deserialize(serialize, objectInputStream);
-
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSProtocolEvent");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- }
-}
diff --git a/sources/exceptions/VSEventNotCopyableException.java b/sources/exceptions/VSEventNotCopyableException.java
deleted file mode 100644
index 643339c..0000000
--- a/sources/exceptions/VSEventNotCopyableException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package exceptions;
-
-/**
- * The Interface VSEventNotCopyableException, this exception is thrown if
- * the someone tried to copy a not copyable event!
- *
- * @author Paul C. Buetow
- */
-public class VSEventNotCopyableException extends Exception {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- public VSEventNotCopyableException(String descr) {
- super(descr);
- }
-}
diff --git a/sources/exceptions/VSNegativeNumberException.java b/sources/exceptions/VSNegativeNumberException.java
deleted file mode 100644
index fdfe530..0000000
--- a/sources/exceptions/VSNegativeNumberException.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package exceptions;
-
-/**
- * The Interface VSNegativeNumberException, this exception is thrown if
- * a negative number has returned if a positive number has been expected.
- *
- * @author Paul C. Buetow
- */
-public class VSNegativeNumberException extends Exception {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-}
diff --git a/sources/exceptions/VSParseIntegerVectorException.java b/sources/exceptions/VSParseIntegerVectorException.java
deleted file mode 100644
index 1344192..0000000
--- a/sources/exceptions/VSParseIntegerVectorException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package exceptions;
-
-/**
- * The Interface VSParseIntegerVectorException, this exception is thrown if
- * the VSAbstractEditor is not able to parse the vector fields input of the
- * user.
- *
- * @author Paul C. Buetow
- */
-public class VSParseIntegerVectorException extends Exception {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-}
diff --git a/sources/prefs/VSDefaultPrefs.java b/sources/prefs/VSDefaultPrefs.java
deleted file mode 100644
index 63a2127..0000000
--- a/sources/prefs/VSDefaultPrefs.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs;
-
-import java.awt.Color;
-import java.awt.event.KeyEvent;
-
-/**
- * The class VSDefaultPrefs, makes sure that the simulator has its default
- * configuration values.
- *
- * @author Paul C. Buetow
- */
-public class VSDefaultPrefs extends VSSerializablePrefs {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Inits a prefs object with default values.
- *
- * @return the lang.process.removeprefs
- */
- public static VSPrefs init() {
- VSDefaultPrefs prefs = new VSDefaultPrefs();
- prefs.fillWithDefaults();
- return prefs;
- }
-
- /**
- * Fill everything with ts defaults.
- */
- public void fillWithDefaults() {
- super.clear();
- addWithDefaults();
- }
-
- /**
- * Adds default values if not existent.
- */
- public void addWithDefaults() {
- fillDefaultBooleans();
- fillDefaultColors();
- fillDefaultFloats();
- fillDefaultIntegers();
- fillDefaultLongs();
- fillDefaultStrings();
- }
-
- /**
- * Fill with default strings.
- */
- public void fillDefaultStrings() {
- initString("lang.en.about", "About");
- initString("lang.en.about.info", "This program used to be the diploma thesis of Paul C. Buetow. Please contact vs@dev.buetow.org, if you find any errors!");
- initString("lang.en.activate", "activate");
- initString("lang.en.activated", "activated");
- initString("lang.en.actualize", "Activation");
- initString("lang.en.all", "All");
- initString("lang.en.antialiasing", "Anti-Aliasing");
- initString("lang.en.cancel", "Abort");
- initString("lang.en.client", "Client");
- initString("lang.en.clientrequest.start", "Start client request");
- initString("lang.en.close", "Close");
- initString("lang.en.colorchooser", "Color chooser");
- initString("lang.en.colorchooser2", "Please select color");
- initString("lang.en.copy", "Copy");
- initString("lang.en.crashed", "Crashed");
- initString("lang.en.dat", "Simulation (.dat)");
- initString("lang.en.deactivate", "deactivate");
- initString("lang.en.deactivated", "deactivated");
- initString("lang.en.default", "Defaults");
- initString("lang.en.edit", "Edit");
- initString("lang.en.editor", "Editor");
- initString("lang.en.event", "Event");
- initString("lang.en.event.add.global", "Insert global event");
- initString("lang.en.event.add.local", "Insert local event");
- initString("lang.en.event.add.time", "at");
- initString("lang.en.events", "Events");
- initString("lang.en.events.process", "Process events");
- initString("lang.en.file", "File");
- initString("lang.en.filter", "Filter");
- initString("lang.en.loging.active", "Logging");
- initString("lang.en.loging.clear", "Delete logs");
- initString("lang.en.message", "Message");
- initString("lang.en.message.recv", "Message received");
- initString("lang.en.message.sent", "Message sent");
- initString("lang.en.mode.expert", "Expert mode");
- initString("lang.en.name", "VS-Simulator 1.1");
- initString("lang.en.ok", "OK");
- initString("lang.en.open", "Open");
- initString("lang.en.pause", "Paus");
- initString("lang.en.prefs", "Preferences");
- initString("lang.en.prefs.color", "Color preferences");
- initString("lang.en.prefs.diverse", "Diverse preferences");
- initString("lang.en.prefs.ext", "Extended preferences");
- initString("lang.en.prefs.message", "Message preferences");
- initString("lang.en.prefs.message.defaults", "Message prefs. for new processes");
- initString("lang.en.prefs.more", "More preferences");
- initString("lang.en.prefs.process", "Process preferences");
- initString("lang.en.prefs.process", "Standard process preferences");
- initString("lang.en.prefs.process.defaults", "Preferences for new processes");
- initString("lang.en.prefs.process.ext", "Extended process preferences");
- initString("lang.en.prefs.protocols", "Protocol preferences");
- initString("lang.en.prefs.simulator", "Simulator preferences");
- initString("lang.en.process", "Process");
- initString("lang.en.process.add.new", "Insert new process");
- initString("lang.en.process.crash", "Crash process");
- initString("lang.en.process.edit", "Edit process");
- initString("lang.en.process.id", "PID");
- initString("lang.en.process.new", "New process");
- initString("lang.en.process.not.selected", "No process selected");
- initString("lang.en.process.recover", "Recover process");
- initString("lang.en.process.remove", "Remove process");
- initString("lang.en.process.selected", "Selected process");
- initString("lang.en.process.time.local", "Local time");
- initString("lang.en.processes.all", "All processes");
- initString("lang.en.protocol", "Protocol");
- initString("lang.en.protocol.client", "Client side");
- initString("lang.en.protocol.editor", "Protocol editor");
- initString("lang.en.protocol.server", "Server side");
- initString("lang.en.protocol.tasks.activation", "Client-/Server protocol activation");
- initString("lang.en.protocol.tasks.client", "Client Task-Manager (Client request)");
- initString("lang.en.protocols", "Protocols");
- initString("lang.en.quit", "Quit");
- initString("lang.en.recovered", "Recovered");
- initString("lang.en.remove", "Remove");
- initString("lang.en.replay", "Repeat");
- initString("lang.en.reset", "Reset");
- initString("lang.en.save", "Save");
- initString("lang.en.saveas", "Save as");
- initString("lang.en.server", "Server");
- initString("lang.en.serverrequest.start", "Start server request");
- initString("lang.en.simulator", "Simulator");
- initString("lang.en.simulator.close", "Close simulation");
- initString("lang.en.simulator.finished", "Simulation closed");
- initString("lang.en.simulator.new", "New simulation");
- initString("lang.en.simulator.paused", "Simulation paused");
- initString("lang.en.simulator.resetted", "Simulation resetted");
- initString("lang.en.simulator.started", "Simulation started");
- initString("lang.en.start", "Start");
- initString("lang.en.stop", "Stop");
- initString("lang.en.takeover", "Take over");
- initString("lang.en.task", "Task");
- initString("lang.en.task.manager", "Event editor");
- initString("lang.en.tasks.fullfilled", "Fullfilled tasks");
- initString("lang.en.tasks.global", "GLobal tasks");
- initString("lang.en.tasks.local", "Local tasks");
- initString("lang.en.time", "Time");
- initString("lang.en.time.lamport", "Lamport time");
- initString("lang.en.time.vector", "Vector time");
- initString("lang.en.timed.global", "Global events");
- initString("lang.en.timed.local", "Local events");
- initString("lang.en.type", "Type");
- initString("lang.en.value", "Value");
- initString("lang.en.variable", "Variable");
- initString("lang.en.variables", "Variables");
- initString("lang.en.variables.global", "Global variables");
- initString("lang.en.window.close", "Close window");
- initString("lang.en.window.new", "New window");
-
- /* Protocol names */
- initString("lang.en.events.implementations.VSProcessCrashEvent", "Process Crash Event");
- initString("lang.en.events.implementations.VSProcessCrashEvent.short", "Process Crash");
- initString("lang.en.events.implementations.VSProcessRecoverEvent", "Process Recover Event");
- initString("lang.en.events.implementations.VSProcessRecoverEvent.short", "Process Recover");
- initString("lang.en.protocols.implementations.VSBasicMulticastProtocol", "Basic Multicast Protocol");
- initString("lang.en.protocols.implementations.VSBasicMulticastProtocol.short", "Basic Multicast");
- initString("lang.en.protocols.implementations.VSBerkelyTimeProtocol", "Berkley algorithm for internal sync.");
- initString("lang.en.protocols.implementations.VSBerkelyTimeProtocol.short", "Berkley Protocol");
- initString("lang.en.protocols.implementations.VSBroadcastProtocol", "Broadcast Protocol");
- initString("lang.en.protocols.implementations.VSBroadcastProtocol.short", "Broadcast");
- initString("lang.en.protocols.implementations.VSDummyProtocol", "Example/Dummy Protocol");
- initString("lang.en.protocols.implementations.VSDummyProtocol.short", "Example/Dummy");
- initString("lang.en.protocols.implementations.VSExternalTimeSyncProtocol", "Christians method for external sync.");
- initString("lang.en.protocols.implementations.VSExternalTimeSyncProtocol.short", "Christians");
- initString("lang.en.protocols.implementations.VSInternalTimeSyncProtocol", "Internal Synchronization Protocol");
- initString("lang.en.protocols.implementations.VSInternalTimeSyncProtocol.short", "Internal sync.");
- initString("lang.en.protocols.implementations.VSOnePhaseCommitProtocol", "One-Phase Commit Protocol");
- initString("lang.en.protocols.implementations.VSOnePhaseCommitProtocol.short", "1-Phase Commit");
- initString("lang.en.protocols.implementations.VSPingPongProtocol", "Ping-Pong Protocol");
- initString("lang.en.protocols.implementations.VSPingPongProtocol.short", "Ping-Pong");
- initString("lang.en.protocols.implementations.VSReliableMulticastProtocol", "Reliable Multicast Protocol");
- initString("lang.en.protocols.implementations.VSReliableMulticastProtocol.short", "Reliable Multicast");
- initString("lang.en.protocols.implementations.VSTwoPhaseCommitProtocol", "Two-Phase Commit");
- initString("lang.en.protocols.implementations.VSTwoPhaseCommitProtocol.short", "2-Phase Commit");
- }
-
- /**
- * Fill with default integers.
- */
- public void fillDefaultIntegers() {
- /* Simulator prefs */
- initInteger("sim.process.num", 3, "Number of processes", 1, 6);
- initInteger("message.prob.outage", 0, "Message lost prob.", 0, 100, "%");
- initInteger("process.prob.crash", 0, "Process crash prob.", 0, 100, "%");
- initInteger("sim.seconds", 15, "Simulation duration", 5, 120, "s");
-
- /* Internal prefs */
- initInteger("keyevent.about", KeyEvent.VK_A, null, 0, 100);
- initInteger("keyevent.cancel", KeyEvent.VK_A, null, 0, 100);
- initInteger("keyevent.close", KeyEvent.VK_C, null, 0, 100);
- initInteger("keyevent.default", KeyEvent.VK_F, null, 0, 100);
- initInteger("keyevent.edit", KeyEvent.VK_E, null, 0, 100);
- initInteger("keyevent.file", KeyEvent.VK_D, null, 0, 100);
- initInteger("keyevent.new", KeyEvent.VK_N, null, 0, 100);
- initInteger("keyevent.actualize", KeyEvent.VK_A, null, 0, 100);
- initInteger("keyevent.takeover", KeyEvent.VK_B, null, 0, 100);
- initInteger("keyevent.ok", KeyEvent.VK_O, null, 0, 100);
- initInteger("keyevent.open", KeyEvent.VK_O, null, 0, 100);
- initInteger("keyevent.pause", KeyEvent.VK_P, null, 0, 100);
- initInteger("keyevent.prefs", KeyEvent.VK_P, null, 0, 100);
- initInteger("keyevent.prefs.ext", KeyEvent.VK_E, null, 0, 100);
- initInteger("keyevent.quit", KeyEvent.VK_B, null, 0, 100);
- initInteger("keyevent.replay", KeyEvent.VK_W, null, 0, 100);
- initInteger("keyevent.reset", KeyEvent.VK_R, null, 0, 100);
- initInteger("keyevent.save", KeyEvent.VK_S, null, 0, 100);
- initInteger("keyevent.saveas", KeyEvent.VK_V, null, 0, 100);
- initInteger("keyevent.simulator", KeyEvent.VK_S, null, 0, 100);
- initInteger("keyevent.start", KeyEvent.VK_S, null, 0, 100);
- initInteger("keyevent.stop", KeyEvent.VK_P, null, 0, 100);
-
- initInteger("div.window.prefs.xsize", 400, "Configuration window X-Axis", 550, 3200, "px");
- initInteger("div.window.prefs.ysize", 400, "Configuration window Y-Axis", 640, 2400, "px");
- initInteger("div.window.logsize", 300, "Log window Y-Axis", 100, 1000, "px");
- initInteger("div.window.splitsize", 320, "Toolbar X-Axis", 100, 1000, "px");
- initInteger("div.window.xsize", 1024, "Main window X-Axis", 750, 3200, "px");
- initInteger("div.window.ysize", 768, "Main window Y-Axis", 600, 2400, "px");
- }
-
- /**
- * Fill with default floats.
- */
- public void fillDefaultFloats() {
- /* Simulator prefs */
- initFloat("process.clock.variance", 0, "Clock variance");
- initFloat("sim.clock.speed", 0.5f, "Simulation play speed");
- }
-
- /**
- * Fill default longs.
- */
- public void fillDefaultLongs() {
- /* Simulator prefs */
- initLong("message.sendingtime.min", 500, "Max transmission time", "ms");
- initLong("message.sendingtime.max", 2000, "Min transmission time", "ms");
- }
-
- /**
- * Fill with default colors.
- */
- public void fillDefaultColors() {
- /* Internal prefs */
- initColor("col.background", new Color(0xFF, 0xFF, 0xFF));
- initColor("col.process.default", new Color(0x00, 0x00, 0x00));
- initColor("col.process.running", new Color(0x0D, 0xD8, 0x09));
- initColor("col.process.crashed", new Color(0xff, 0x00, 0x00));
- initColor("col.process.highlight", new Color(0xff, 0xA5, 0x00));
- initColor("col.process.line", new Color(0x00, 0x00, 0x00));
- initColor("col.process.secondline", new Color(0xAA, 0xAA, 0xAA));
- initColor("col.process.sepline", new Color(0xff, 0x00, 0x00));
- initColor("col.process.stopped", new Color(0x00, 0x00, 0x00));
- initColor("col.message.arrived", new Color(0x00, 0x85, 0xD2));
- initColor("col.message.sending", new Color(0x0D, 0xD8, 0x09));
- initColor("col.message.lost", new Color(0xFF, 0x00, 0x00));
- }
-
- /**
- * Fill with default booleans.
- */
- public void fillDefaultBooleans() {
- initBoolean("sim.mode.expert", false, "Expert mode");
- initBoolean("sim.message.own.recv", false, "Processes receive own messages");
- initBoolean("sim.message.prob.mean", true, "Use mean value of message lost prob.");
- initBoolean("sim.message.sendingtime.mean", true, "Use mean value of transmission times");
- initBoolean("sim.messages.relevant", true, "Only show relevant messages");
- initBoolean("sim.periodic", false, "Repeat simulation periodically");
- initBoolean("sim.update.lamporttime.all", false, "Lamport timestamps affect all events");
- initBoolean("sim.update.vectortime.all", false, "Vector timestamps affect all events");
- }
-}
diff --git a/sources/prefs/VSDefaultPrefsDE.java b/sources/prefs/VSDefaultPrefsDE.java
deleted file mode 100644
index 9f65153..0000000
--- a/sources/prefs/VSDefaultPrefsDE.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs;
-
-import java.awt.Color;
-import java.awt.event.KeyEvent;
-
-/**
- * The class VSDefaultPrefsDE, makes sure that the simulator has its default
- * configuration values.
- *
- * @author Paul C. Buetow
- */
-public class VSDefaultPrefsDE extends VSSerializablePrefs {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Inits a prefs object with default values.
- *
- * @return the lang.process.removeprefs
- */
- public static VSPrefs init() {
- VSDefaultPrefsDE prefs = new VSDefaultPrefsDE();
- prefs.fillWithDefaults();
- return prefs;
- }
-
- /**
- * Fill everything with ts defaults.
- */
- public void fillWithDefaults() {
- super.clear();
- addWithDefaults();
- }
-
- /**
- * Adds default values if not existent.
- */
- public void addWithDefaults() {
- fillDefaultBooleans();
- fillDefaultColors();
- fillDefaultFloats();
- fillDefaultIntegers();
- fillDefaultLongs();
- fillDefaultStrings();
- }
-
- /**
- * Fill with default strings.
- */
- public void fillDefaultStrings() {
- initString("lang.de.about", "About");
- initString("lang.de.about.info", "Dieses Programm wurde von Paul Bütow im Rahmen der Diplomarbeit \"Objektorientierte Entwicklung eines GUI-basierten Tools für die ereignisbasierte Simulator verteilter Systeme\" bei Prof. Dr.-Ing. Oßmann als 1. Prüfer sowie Betreuer und Prof. Dr. rer. nat. Fassbender als 2. Prüfer erstellt. Bei Fehlern bitte eine kurze Mail mit Fehlerbeschreibung an vs@paul.buetow.org schicken!");
- initString("lang.de.activate", "aktivieren");
- initString("lang.de.activated", "aktiviert");
- initString("lang.de.actualize", "Aktualisieren");
- initString("lang.de.all", "Alle");
- initString("lang.de.antialiasing", "Anti-Aliasing");
- initString("lang.de.cancel", "Abbrechen");
- initString("lang.de.client", "Client");
- initString("lang.de.clientrequest.start", "Clientanfrage starten");
- initString("lang.de.close", "Schliessen");
- initString("lang.de.colorchooser", "Farbauswahl");
- initString("lang.de.colorchooser2", "Bitte Farbe auswählen");
- initString("lang.de.copy", "Kopieren");
- initString("lang.de.crashed", "Abgestürzt");
- initString("lang.de.dat", "Simulation (.dat)");
- initString("lang.de.deactivate", "deaktivieren");
- initString("lang.de.deactivated", "deaktiviert");
- initString("lang.de.default", "Defaults");
- initString("lang.de.edit", "Editieren");
- initString("lang.de.editor", "Editor");
- initString("lang.de.event", "Ereignis");
- initString("lang.de.event.add.global", "Globales Ereignis einfügen");
- initString("lang.de.event.add.local", "Lokales Ereignis einfügen");
- initString("lang.de.event.add.time", "bei");
- initString("lang.de.events", "Ereignisse");
- initString("lang.de.events.process", "Prozessereignisse");
- initString("lang.de.file", "Datei");
- initString("lang.de.filter", "Filter");
- initString("lang.de.loging.active", "Logging");
- initString("lang.de.loging.clear", "Loggs löschen");
- initString("lang.de.message", "Nachricht");
- initString("lang.de.message.recv", "Nachricht erhalten");
- initString("lang.de.message.sent", "Nachricht versendet");
- initString("lang.de.mode.expert", "Expertenmodus");
- initString("lang.de.name", "VS-Simulator 1.0");
- initString("lang.de.ok", "OK");
- initString("lang.de.open", "Öffnen");
- initString("lang.de.pause", "Pausieren");
- initString("lang.de.prefs", "Einstellungen");
- initString("lang.de.prefs.color", "Farbeinstellungen");
- initString("lang.de.prefs.diverse", "Diverse Einstellungen");
- initString("lang.de.prefs.ext", "Erweiterte Einstellungen");
- initString("lang.de.prefs.message", "Nachrichteneinstellungen");
- initString("lang.de.prefs.message.defaults", "Nachrichteneinstellungen für neue Prozesse");
- initString("lang.de.prefs.more", "Mehr Einstellungen");
- initString("lang.de.prefs.process", "Prozesseinstellungen");
- initString("lang.de.prefs.process", "Prozessstandardeinstellungen");
- initString("lang.de.prefs.process.defaults", "Einstellungen für neue Prozesse");
- initString("lang.de.prefs.process.ext", "Erweiterte Prozesseinstellungen");
- initString("lang.de.prefs.protocols", "Protokolleinstellungen");
- initString("lang.de.prefs.simulator", "Simulationseinstellungen");
- initString("lang.de.process", "Prozess");
- initString("lang.de.process.add.new", "Neuen Prozess hinzufügen");
- initString("lang.de.process.crash", "Prozess abstürzen");
- initString("lang.de.process.edit", "Prozess editieren");
- initString("lang.de.process.id", "PID");
- initString("lang.de.process.new", "Neuer Prozess");
- initString("lang.de.process.not.selected", "Kein Prozess ausgewählt");
- initString("lang.de.process.recover", "Prozess wiederbeleben");
- initString("lang.de.process.remove", "Prozess entfernen");
- initString("lang.de.process.selected", "Aktuell ausgewählter Prozess");
- initString("lang.de.process.time.local", "Lokale Zeit");
- initString("lang.de.processes.all", "Alle Prozesse");
- initString("lang.de.protocol", "Protokoll");
- initString("lang.de.protocol.client", "Clientseite");
- initString("lang.de.protocol.editor", "Protokolleditor");
- initString("lang.de.protocol.server", "Serverseite");
- initString("lang.de.protocol.tasks.activation", "Client-/Serverprotokoll Aktivierung");
- initString("lang.de.protocol.tasks.client", "Client Task-Manager (Clientanfragen)");
- initString("lang.de.protocols", "Protokolle");
- initString("lang.de.quit", "Beenden");
- initString("lang.de.recovered", "Wiederbelebt");
- initString("lang.de.remove", "Entfernen");
- initString("lang.de.replay", "Wiederholen");
- initString("lang.de.reset", "Reset");
- initString("lang.de.save", "Speichern");
- initString("lang.de.saveas", "Speichern unter");
- initString("lang.de.server", "Server");
- initString("lang.de.serverrequest.start", "Serveranfrage starten");
- initString("lang.de.simulator", "Simulator");
- initString("lang.de.simulator.close", "Simulation schliessen");
- initString("lang.de.simulator.finished", "Simulation beendet");
- initString("lang.de.simulator.new", "Neue Simulation");
- initString("lang.de.simulator.paused", "Simulation pausiert");
- initString("lang.de.simulator.resetted", "Simulation zurückgesetzt");
- initString("lang.de.simulator.started", "Simulation gestartet");
- initString("lang.de.start", "Starten");
- initString("lang.de.stop", "Stoppen");
- initString("lang.de.takeover", "Übernehmen");
- initString("lang.de.task", "Aufgabe");
- initString("lang.de.task.manager", "Ereigniseditor");
- initString("lang.de.tasks.fullfilled", "Abgelaufene Aufgaben");
- initString("lang.de.tasks.global", "Globale Aufgaben");
- initString("lang.de.tasks.local", "Lokale Aufgaben");
- initString("lang.de.time", "Zeit");
- initString("lang.de.time.lamport", "Lamportzeit");
- initString("lang.de.time.vector", "Vektorzeit");
- initString("lang.de.timed.global", "Globale Ereignisse");
- initString("lang.de.timed.local", "Lokale Ereignisse");
- initString("lang.de.type", "Typ");
- initString("lang.de.value", "Wert");
- initString("lang.de.variable", "Variable");
- initString("lang.de.variables", "Variablen");
- initString("lang.de.variables.global", "Globale Variablen");
- initString("lang.de.window.close", "Fenster schliessen");
- initString("lang.de.window.new", "Neues Fenster");
- }
-
- /**
- * Fill with default integers.
- */
- public void fillDefaultIntegers() {
- /* Simulator prefs */
- initInteger("sim.process.num", 3, "Anzahl der Prozesse", 1, 6);
- initInteger("message.prob.outage", 0, "Nachrichtenverlustw'keit", 0, 100, "%");
- initInteger("process.prob.crash", 0, "Prozessausfallw'keit", 0, 100, "%");
- initInteger("sim.seconds", 15, "Dauer der Simulation", 5, 120, "s");
-
- /* Internal prefs */
- initInteger("keyevent.about", KeyEvent.VK_A, null, 0, 100);
- initInteger("keyevent.cancel", KeyEvent.VK_A, null, 0, 100);
- initInteger("keyevent.close", KeyEvent.VK_C, null, 0, 100);
- initInteger("keyevent.default", KeyEvent.VK_F, null, 0, 100);
- initInteger("keyevent.edit", KeyEvent.VK_E, null, 0, 100);
- initInteger("keyevent.file", KeyEvent.VK_D, null, 0, 100);
- initInteger("keyevent.new", KeyEvent.VK_N, null, 0, 100);
- initInteger("keyevent.actualize", KeyEvent.VK_A, null, 0, 100);
- initInteger("keyevent.takeover", KeyEvent.VK_B, null, 0, 100);
- initInteger("keyevent.ok", KeyEvent.VK_O, null, 0, 100);
- initInteger("keyevent.open", KeyEvent.VK_O, null, 0, 100);
- initInteger("keyevent.pause", KeyEvent.VK_P, null, 0, 100);
- initInteger("keyevent.prefs", KeyEvent.VK_P, null, 0, 100);
- initInteger("keyevent.prefs.ext", KeyEvent.VK_E, null, 0, 100);
- initInteger("keyevent.quit", KeyEvent.VK_B, null, 0, 100);
- initInteger("keyevent.replay", KeyEvent.VK_W, null, 0, 100);
- initInteger("keyevent.reset", KeyEvent.VK_R, null, 0, 100);
- initInteger("keyevent.save", KeyEvent.VK_S, null, 0, 100);
- initInteger("keyevent.saveas", KeyEvent.VK_V, null, 0, 100);
- initInteger("keyevent.simulator", KeyEvent.VK_S, null, 0, 100);
- initInteger("keyevent.start", KeyEvent.VK_S, null, 0, 100);
- initInteger("keyevent.stop", KeyEvent.VK_P, null, 0, 100);
-
- initInteger("div.window.prefs.xsize", 400, "Einstellungsfenster X-Achse", 550, 3200, "px");
- initInteger("div.window.prefs.ysize", 400, "Einstellungsfenster Y-Achse", 640, 2400, "px");
- initInteger("div.window.logsize", 300, "Loggfenster Y-Achse", 100, 1000, "px");
- initInteger("div.window.splitsize", 320, "Toolbar X-Achse", 100, 1000, "px");
- initInteger("div.window.xsize", 1024, "Hauptfenster X-Achse", 750, 3200, "px");
- initInteger("div.window.ysize", 768, "Hauptfenster Y-Achse", 600, 2400, "px");
- }
-
- /**
- * Fill with default floats.
- */
- public void fillDefaultFloats() {
- /* Simulator prefs */
- initFloat("process.clock.variance", 0, "Uhrabweichung");
- initFloat("sim.clock.speed", 0.5f, "Abspielgeschwindigkeit der Simulation");
- }
-
- /**
- * Fill default longs.
- */
- public void fillDefaultLongs() {
- /* Simulator prefs */
- initLong("message.sendingtime.min", 500, "Minimale Übertragungszeit", "ms");
- initLong("message.sendingtime.max", 2000, "Maximale Übertragungszeit", "ms");
- }
-
- /**
- * Fill with default colors.
- */
- public void fillDefaultColors() {
- /* Internal prefs */
- initColor("col.background", new Color(0xFF, 0xFF, 0xFF));
- initColor("col.process.default", new Color(0x00, 0x00, 0x00));
- initColor("col.process.running", new Color(0x0D, 0xD8, 0x09));
- initColor("col.process.crashed", new Color(0xff, 0x00, 0x00));
- initColor("col.process.highlight", new Color(0xff, 0xA5, 0x00));
- initColor("col.process.line", new Color(0x00, 0x00, 0x00));
- initColor("col.process.secondline", new Color(0xAA, 0xAA, 0xAA));
- initColor("col.process.sepline", new Color(0xff, 0x00, 0x00));
- initColor("col.process.stopped", new Color(0x00, 0x00, 0x00));
- initColor("col.message.arrived", new Color(0x00, 0x85, 0xD2));
- initColor("col.message.sending", new Color(0x0D, 0xD8, 0x09));
- initColor("col.message.lost", new Color(0xFF, 0x00, 0x00));
- }
-
- /**
- * Fill with default booleans.
- */
- public void fillDefaultBooleans() {
- initBoolean("sim.mode.expert", false, "Expertenmodus aktivieren");
- initBoolean("sim.message.own.recv", false, "Prozesse empfangen eigene Nachrichten");
- initBoolean("sim.message.prob.mean", true, "Mittelwerte der Nachrichtverlustw'k. bilden");
- initBoolean("sim.message.sendingtime.mean", true, "Mittelwerte der Übertragungszeiten bilden");
- initBoolean("sim.messages.relevant", true, "Nur relevante Nachrichten anzeigen");
- initBoolean("sim.periodic", false, "Simulation periodisch wiederholen");
- initBoolean("sim.update.lamporttime.all", false, "Lamportzeiten betreffen alle Ereignisse");
- initBoolean("sim.update.vectortime.all", false, "Vektorzeiten betreffen alle Ereignisse");
- }
-}
diff --git a/sources/prefs/VSPrefs.java b/sources/prefs/VSPrefs.java
deleted file mode 100644
index 31e1f22..0000000
--- a/sources/prefs/VSPrefs.java
+++ /dev/null
@@ -1,1210 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs;
-
-import java.awt.Color;
-import java.io.*;
-import java.util.*;
-
-import serialize.*;
-
-/**
- * The class VSPrefs, this class is for dynamic data storage. It can hold
- * various different types such as Boolean, Floats, Integers, Strings, Colors.
- *
- * @author Paul C. Buetow
- */
-public class VSPrefs {
- /** Check if we want to overwrite description strings */
- //private boolean useDefaultStrings = false;
-
- /** The Constant BOOLEAN_PREFIX. */
- public static final String BOOLEAN_PREFIX = "Boolean: ";
-
- /** The Constant COLOR_PREFIX. */
- public static final String COLOR_PREFIX = "Color: ";
-
- /** The Constant FLOAT_PREFIX. */
- public static final String FLOAT_PREFIX = "Float: ";
-
- /** The Constant INTEGER_PREFIX. */
- public static final String INTEGER_PREFIX = "Integer: ";
-
- /** The Constant VECTOR_PREFIX. */
- public static final String VECTOR_PREFIX = "Vector: ";
-
- /** The Constant LONG_PREFIX. */
- public static final String LONG_PREFIX = "Long: ";
-
- /** The Constant STRING_PREFIX. */
- public static final String STRING_PREFIX = "String: ";
-
- /** The color prefs. */
- private HashMap<String,Color> colorPrefs;
-
- /** The float prefs. */
- private HashMap<String,Float> floatPrefs;
-
- /** The integer prefs. */
- private HashMap<String,Integer> integerPrefs;
-
- /** The integer vector prefs. */
- private HashMap<String,Vector<Integer>> vectorPrefs;
-
- /** The long prefs. */
- private HashMap<String,Long> longPrefs;
-
- /** The setting restriction prefs. */
- private HashMap<String,VSPrefsRestriction> restrictions;
-
- /** The description prefs. */
- private HashMap<String,String> descriptionPrefs;
-
- /** The string prefs. */
- private HashMap<String,String> stringPrefs;
-
- /** The boolean prefs. */
- private HashMap<String,Boolean> booleanPrefs;
-
- /** The object prefs. */
- private HashMap<String,Object> objectPrefs;
-
- /** The units. */
- private HashMap<String,String> units;
-
- /** The Constant serialVersionUID. */
- private static final long serialVersionUID = 4L;
-
- /** The id counter. */
- private static int idCounter;
-
- /** The id. */
- protected int id;
-
- /**
- * Instantiates a new lang.process.removeprefs.
- */
- public VSPrefs() {
- colorPrefs = new HashMap<String,Color>();
- descriptionPrefs = new HashMap<String,String>();
- floatPrefs = new HashMap<String,Float>();
- integerPrefs = new HashMap<String,Integer>();
- vectorPrefs = new HashMap<String,Vector<Integer>>();
- longPrefs = new HashMap<String,Long>();
- restrictions = new HashMap<String,VSPrefsRestriction>();
- stringPrefs = new HashMap<String,String>();
- booleanPrefs = new HashMap<String,Boolean>();
- objectPrefs = new HashMap<String,Object>();
- units = new HashMap<String,String>();
- id = ++idCounter;
- }
-
- /**
- * Clear.
- */
- protected synchronized void clear() {
- colorPrefs.clear();
- floatPrefs.clear();
- integerPrefs.clear();
- vectorPrefs.clear();
- longPrefs.clear();
- stringPrefs.clear();
- booleanPrefs.clear();
- objectPrefs.clear();
- descriptionPrefs.clear();
- restrictions.clear();
- }
-
- /* Unit methods */
-
- /**
- * Gets the unit.
- *
- * @param fullKey the full key
- *
- * @return the unit
- */
- public synchronized String getUnit(String fullKey) {
- return units.get(fullKey);
- }
-
- /**
- * Sets the unit.
- *
- * @param key the key
- * @param unit the unit
- */
- public synchronized void initUnit(String key, String unit) {
- if (unit == null /*|| units.containsKey(key)*/)
- return;
- units.put(key, unit);
- }
-
- /* Description methods */
- /**
- * Sets the description if unset.
- *
- * @param key the key
- * @param descr the descr
- */
- public synchronized void initDescription(String key, String descr) {
- if (descr == null /*|| descriptionPrefs.containsKey(key)*/)
- return;
- descriptionPrefs.put(key, descr);
- }
-
- /**
- * Gets the description.
- *
- * @param fullKey the full key
- *
- * @return the description
- */
- public synchronized String getDescription(String fullKey) {
- return descriptionPrefs.get(fullKey);
- }
-
- /* Restriction methods */
-
- /**
- * Gets the restriction.
- *
- * @param fullKey the full key
- *
- * @return the restriction
- */
- public synchronized VSPrefsRestriction getRestriction(String fullKey) {
- return restrictions.get(fullKey);
- }
-
- /**
- * Sets the restriction.
- *
- * @param key the key
- * @param settingRestriction the setting restriction
- */
- public synchronized void initRestriction(String key,
- VSPrefsRestriction settingRestriction) {
- restrictions.put(key, settingRestriction);
- }
-
- /* Object methods */
-
- /**
- * Object exists.
- *
- * @param key the key
- *
- * @return true, if successful
- */
- public synchronized boolean objectExists(String key) {
- return null != objectPrefs.get(key);
- }
-
- /**
- * Gets the object.
- *
- * @param key the key
- *
- * @return the object
- */
- public synchronized Object getObject(String key) {
- Object val = objectPrefs.get(key);
-
- if (val == null) {
- System.err.println("Fatal: No such object config value \""
- + key + "\"");
- System.exit(1);
- }
-
- return val;
- }
-
- /**
- * Removes the object.
- *
- * @param key the key
- */
- public synchronized void removeObject(String key) {
- objectPrefs.remove(key);
- }
-
- /**
- * Sets the object.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void setObject(String key, Object val) {
- objectPrefs.put(key, val);
- }
-
- /* Boolean methods */
-
- /**
- * Gets the boolean.
- *
- * @param key the key
- *
- * @return the boolean
- */
- public boolean getBoolean(String key) {
- return getBooleanObj(key).booleanValue();
- }
-
- /**
- * Gets the boolean key set.
- *
- * @return the boolean key set
- */
- public synchronized Set<String> getBooleanKeySet() {
- return booleanPrefs.keySet();
- }
-
- /**
- * Gets the boolean obj.
- *
- * @param key the key
- *
- * @return the boolean obj
- */
- public synchronized Boolean getBooleanObj(String key) {
- Boolean val = booleanPrefs.get(key);
-
- if (val == null)
- return new Boolean(false);
-
- return val;
- }
-
- /**
- * Inits the boolean.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void initBoolean(String key, Boolean val) {
- if (!booleanPrefs.containsKey(key))
- booleanPrefs.put(key, val);
- }
-
- /**
- * Inits the boolean.
- *
- * @param key the key
- * @param val the val
- */
- public void initBoolean(String key, boolean val) {
- initBoolean(key, new Boolean(val));
- }
-
- /**
- * Inits the boolean.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- */
- public void initBoolean(String key, boolean val, String descr) {
- initBoolean(key, val);
- initDescription(BOOLEAN_PREFIX + key, descr);
- }
-
- /**
- * Sets the boolean.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void setBoolean(String key, Boolean val) {
- booleanPrefs.put(key, val);
- }
-
- /**
- * Sets the boolean.
- *
- * @param key the key
- * @param val the val
- */
- public void setBoolean(String key, boolean val) {
- setBoolean(key, new Boolean(val));
- }
-
- /* Color methods */
-
- /**
- * Gets the color.
- *
- * @param key the key
- *
- * @return the color
- */
- public synchronized Color getColor(String key) {
- Color color = colorPrefs.get(key);
-
- if (color == null) {
- System.err.println("Fatal: No such color config value \""
- + key + "\"");
- System.exit(1);
- }
-
- return color;
- }
-
- /**
- * Gets the color key set.
- *
- * @return the color key set
- */
- public synchronized Set<String> getColorKeySet() {
- return colorPrefs.keySet();
- }
-
- /**
- * Inits the color.
- *
- * @param key the key
- * @param color the color
- */
- public synchronized void initColor(String key, Color color) {
- if (!colorPrefs.containsKey(key))
- colorPrefs.put(key, color);
- }
-
- /**
- * Inits the color.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- */
- public void initColor(String key, Color val, String descr) {
- initColor(key, val);
- initDescription(COLOR_PREFIX + key, descr);
- }
-
- /**
- * Sets the color.
- *
- * @param key the key
- * @param color the color
- */
- public synchronized void setColor(String key, Color color) {
- colorPrefs.put(key, color);
- }
-
- /* Float methods */
-
- /**
- * Gets the float.
- *
- * @param key the key
- *
- * @return the float
- */
- public float getFloat(String key) {
- return getFloatObj(key).floatValue();
- }
-
- /**
- * Gets the float key set.
- *
- * @return the float key set
- */
- public synchronized Set<String> getFloatKeySet() {
- return floatPrefs.keySet();
- }
-
- /**
- * Gets the float obj.
- *
- * @param key the key
- *
- * @return the float obj
- */
- public synchronized Float getFloatObj(String key) {
- Float val = floatPrefs.get(key);
-
- if (val == null) {
- System.err.println("Fatal: No such float config value \""
- + key + "\"");
- System.exit(1);
- }
-
- return val;
- }
-
- /**
- * Inits the float.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void initFloat(String key, Float val) {
- if (!floatPrefs.containsKey(key))
- floatPrefs.put(key, val);
- }
-
- /**
- * Inits the float.
- *
- * @param key the key
- * @param val the val
- */
- public void initFloat(String key, float val) {
- initFloat(key, new Float(val));
- }
-
- /**
- * Inits the float.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- */
- public void initFloat(String key, float val, String descr) {
- initFloat(key, val);
- initDescription(FLOAT_PREFIX + key, descr);
- }
-
- /**
- * Inits the float plus unit.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- * @param unit the unit
- */
- public void initFloat(String key, float val, String descr, String unit) {
- initFloat(key, val, descr);
- initUnit(FLOAT_PREFIX + key, unit);
- }
-
- /**
- * Sets the float.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void setFloat(String key, Float val) {
- floatPrefs.put(key, val);
- }
-
- /**
- * Sets the float.
- *
- * @param key the key
- * @param val the val
- */
- public void setFloat(String key, float val) {
- setFloat(key, new Float(val));
- }
-
- /* Integer methods */
-
- /**
- * Gets the integer.
- *
- * @param key the key
- *
- * @return the integer
- */
- public int getInteger(String key) {
- return getIntegerObj(key).intValue();
- }
-
- /**
- * Gets the integer key set.
- *
- * @return the integer key set
- */
- public synchronized Set<String> getIntegerKeySet() {
- return integerPrefs.keySet();
- }
-
- /**
- * Gets the integer obj.
- *
- * @param key the key
- *
- * @return the integer obj
- */
- public synchronized Integer getIntegerObj(String key) {
- Integer val = integerPrefs.get(key);
-
- if (val == null) {
- System.err.println("Fatal: No such integer config value \""
- + key + "\"");
- System.exit(1);
- }
-
- return val;
- }
-
- /**
- * Inits the integer.
- *
- * @param key the key
- * @param val the val
- */
- public void initInteger(String key, int val) {
- if (!integerPrefs.containsKey(key))
- setInteger(key, new Integer(val));
- }
-
- /**
- * Inits the integer.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- */
- public void initInteger(String key, int val, String descr) {
- initInteger(key, val);
- initDescription(INTEGER_PREFIX + key, descr);
- }
-
- /**
- * Inits the integer.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- * @param r the restriction
- */
- public void initInteger(String key, int val, String descr,
- VSPrefsRestriction.VSIntegerPrefsRestriction r) {
- initInteger(key, val, descr);
- initRestriction(INTEGER_PREFIX + key, r);
- }
-
- /**
- * Inits the integer.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- * @param r the restriction
- */
- public void initInteger(String key, int val, String descr,
- VSPrefsRestriction.VSIntegerPrefsRestriction r,
- String unit) {
- initInteger(key, val, descr, r);
- initUnit(INTEGER_PREFIX + key, unit);
- }
-
- /**
- * Inits the integer.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- * @param minValue the min value
- * @param maxValue the max value
- */
- public void initInteger(String key, int val, String descr, int minValue,
- int maxValue) {
- initInteger(key, val, descr,
- new VSPrefsRestriction.VSIntegerPrefsRestriction(
- minValue, maxValue));
- }
-
- /**
- * Inits the integer plus unit.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- * @param minValue the min value
- * @param maxValue the max value
- * @param unit the unit
- */
- public void initInteger(String key, int val, String descr, int minValue,
- int maxValue, String unit) {
- initInteger(key, val, descr, minValue, maxValue);
- initUnit(INTEGER_PREFIX + key, unit);
- }
-
- /**
- * Sets the integer.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void setInteger(String key, Integer val) {
- integerPrefs.put(key, val);
- }
-
- /**
- * Sets the integer.
- *
- * @param key the key
- * @param val the val
- */
- public void setInteger(String key, int val) {
- setInteger(key, new Integer(val));
- }
-
- /* Integer vector methods */
-
- /**
- * Gets the integer key set.
- *
- * @return the integer key set
- */
- public synchronized Set<String> getVectorKeySet() {
- return vectorPrefs.keySet();
- }
-
- /**
- * Gets the integer obj.
- *
- * @param key the key
- *
- * @return the integer obj
- */
- public synchronized Vector<Integer> getVector(String key) {
- Vector<Integer> val = vectorPrefs.get(key);
-
- if (val == null) {
- System.err.println("Fatal: No such integer config value \""
- + key + "\"");
- System.exit(1);
- }
-
- return val;
- }
-
- /**
- * Inits the integer.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void initVector(String key, Vector<Integer> val) {
- if (!vectorPrefs.containsKey(key))
- setVector(key, val);
- }
-
- /**
- * Inits the integer vector.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- */
- public void initVector(String key, Vector<Integer> val, String descr) {
- initVector(key, val);
- initDescription(VECTOR_PREFIX + key, descr);
- }
-
- /**
- * Inits the integer vector plus unit.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- */
- public void initVector(String key, Vector<Integer> val, String descr,
- String unit) {
- initVector(key, val, descr);
- initUnit(VECTOR_PREFIX + key, unit);
- }
-
- /**
- * Sets the integer vector.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void setVector(String key, Vector<Integer> val) {
- vectorPrefs.put(key, val);
- }
-
- /* Long methods */
-
- /**
- * Gets the long.
- *
- * @param key the key
- *
- * @return the long
- */
- public long getLong(String key) {
- return getLongObj(key).longValue();
- }
-
- /**
- * Gets the long key set.
- *
- * @return the long key set
- */
- public synchronized Set<String> getLongKeySet() {
- return longPrefs.keySet();
- }
-
- /**
- * Gets the long obj.
- *
- * @param key the key
- *
- * @return the long obj
- */
- public synchronized Long getLongObj(String key) {
- Long val = longPrefs.get(key);
-
- if (val == null) {
- System.err.println("Fatal: No such long config value \""
- + key + "\"");
- System.exit(1);
- }
-
- return val;
- }
-
- /**
- * Inits the long.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void initLong(String key, Long val) {
- if (!longPrefs.containsKey(key))
- longPrefs.put(key, val);
- }
-
- /**
- * Sets the long if unset.
- *
- * @param key the key
- * @param val the val
- */
- public void initLong(String key, long val) {
- initLong(key, new Long(val));
- }
-
- /**
- * Inits the long.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- */
- public void initLong(String key, long val, String descr) {
- initLong(key, val);
- initDescription(LONG_PREFIX + key, descr);
- }
-
- /**
- * Inits the long unit.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- * @param unit the unit
- */
- public void initLong(String key, long val, String descr, String unit) {
- initLong(key, val, descr);
- initUnit(LONG_PREFIX + key, unit);
- }
-
- /**
- * Deletes the long.
- *
- * @param key the key
- */
- public synchronized void deleteLong(String key) {
- longPrefs.remove(key);
- }
-
- /**
- * Sets the long.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void setLong(String key, Long val) {
- longPrefs.put(key, val);
- }
-
- /**
- * Sets the long.
- *
- * @param key the key
- * @param val the val
- */
- public void setLong(String key, long val) {
- setLong(key, new Long(val));
- }
-
- /* String methods */
-
- /**
- * Gets the string.
- *
- * @param key the key
- *
- * @return the string
- */
- public synchronized String getString(String key) {
- String val = stringPrefs.get(key);
-
- if (val == null) {
- System.err.println("Fatal: No such string config value \""
- + key + "\"");
- System.exit(1);
- }
-
- return val;
- }
-
- /**
- * Gets the string key set.
- *
- * @return the string key set
- */
- public synchronized Set<String> getStringKeySet() {
- return stringPrefs.keySet();
- }
-
- /**
- * Inits the string.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void initString(String key, String val) {
- //if (!stringPrefs.containsKey(key))
- stringPrefs.put(key, val);
- }
-
- /**
- * Inits the string.
- *
- * @param key the key
- * @param val the val
- * @param descr the descr
- */
- public void initString(String key, String val, String descr) {
- initString(key, val);
- initDescription(STRING_PREFIX + key, descr);
- }
-
- /**
- * Sets the string.
- *
- * @param key the key
- * @param val the val
- */
- public synchronized void setString(String key, String val) {
- stringPrefs.put(key, val);
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- protected synchronized void serialize_(
- VSSerialize serialize, ObjectOutputStream objectOutputStream)
- throws IOException {
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- objectOutputStream.writeObject(booleanPrefs);
- objectOutputStream.writeObject(colorPrefs);
- objectOutputStream.writeObject(descriptionPrefs);
- objectOutputStream.writeObject(floatPrefs);
- objectOutputStream.writeObject(integerPrefs);
- objectOutputStream.writeObject(longPrefs);
- objectOutputStream.writeObject(stringPrefs);
- objectOutputStream.writeObject(units);
- objectOutputStream.writeObject(vectorPrefs);
- objectOutputStream.writeObject(restrictions);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- protected synchronized void deserialize_(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- objectPrefs.clear();
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- booleanPrefs = (HashMap<String,Boolean>)
- objectInputStream.readObject();
- colorPrefs = (HashMap<String,Color>)
- objectInputStream.readObject();
- descriptionPrefs = (HashMap<String,String>)
- objectInputStream.readObject();
- floatPrefs = (HashMap<String,Float>)
- objectInputStream.readObject();
- integerPrefs = (HashMap<String,Integer>)
- objectInputStream.readObject();
- longPrefs = (HashMap<String,Long>)
- objectInputStream.readObject();
- stringPrefs = (HashMap<String,String>)
- objectInputStream.readObject();
- units = (HashMap<String,String>)
- objectInputStream.readObject();
- vectorPrefs = (HashMap<String,Vector<Integer>>)
- objectInputStream.readObject();
- restrictions = (HashMap<String,VSPrefsRestriction>)
- objectInputStream.readObject();
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-
- /**
- * Copies integers into another VSPrefs object.
- *
- * @param copyInto the copy into
- * @param keys the keys
- */
- public void copyIntegers(VSPrefs copyInto, String[] keys) {
- for (String key : keys)
- copyInto.initInteger(key,
- getInteger(key),
- getDescription(INTEGER_PREFIX + key),
- (VSPrefsRestriction.VSIntegerPrefsRestriction)
- getRestriction(INTEGER_PREFIX + key),
- getUnit(INTEGER_PREFIX + key));
- }
-
- /**
- * Copies longs into another VSPrefs object.
- *
- * @param copyInto the copy into
- * @param keys the keys
- */
- public void copyLongs(VSPrefs copyInto, String[] keys) {
- for (String key : keys)
- copyInto.initLong(key, getLong(key),
- getDescription(LONG_PREFIX + key),
- getUnit(LONG_PREFIX + key));
- }
-
- /**
- * Copies floats into another VSPrefs object.
- *
- * @param copyInto the copy into
- * @param keys the keys
- */
- public void copyFloats(VSPrefs copyInto, String[] keys) {
- for (String key : keys)
- copyInto.initFloat(key, getFloat(key),
- getDescription(FLOAT_PREFIX + key),
- getUnit(FLOAT_PREFIX + key));
- }
-
- /**
- * Copies strings into another VSPrefs object.
- *
- * @param copyInto the copy into
- * @param keys the keys
- */
- public void copyStrings(VSPrefs copyInto, String[] keys) {
- for (String key : keys)
- copyInto.initString(key, getString(key),
- getDescription(STRING_PREFIX + key));
- }
-
- /**
- * Copies color references into another VSPrefs object.
- *
- * @param copyInto the copy into
- * @param keys the keys
- */
- public void copyColors(VSPrefs copyInto, String[] keys) {
- for (String key : keys) {
- Color color = getColor(key);
- float comp[] = color.getComponents(null);
- copyInto.initColor(key, new Color(comp[0], comp[1], comp[2]),
- getDescription(COLOR_PREFIX + key));
- }
- }
-
- /**
- * Copies colors.
- *
- * @param copyInto the copy into
- * @param keys the keys
- */
- public void copyBooleans(VSPrefs copyInto, String[] keys) {
- for (String key : keys)
- copyInto.initBoolean(key, getBoolean(key),
- getDescription(BOOLEAN_PREFIX + key));
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- public String toString() {
- String descr = "";
-
- Set<String> set = null;
-
- set = getIntegerKeySet();
- if (set.size() > 0) {
- descr += INTEGER_PREFIX;
- for (String key : set)
- descr += key + "=" + getInteger(key) + "; ";
- }
-
- set = getVectorKeySet();
- if (set.size() > 0) {
- descr += VECTOR_PREFIX;
- for (String key : set)
- descr += key + "=" + getVector(key) + "; ";
- }
-
- set = getLongKeySet();
- if (set.size() > 0) {
- descr += LONG_PREFIX;
- for (String key : set)
- descr += key + "=" + getLong(key) + "; ";
- }
-
- set = getFloatKeySet();
- if (set.size() > 0) {
- descr += FLOAT_PREFIX;
- for (String key : set)
- descr += key + "=" + getFloat(key) + "; ";
- }
-
- set = getBooleanKeySet();
- if (set.size() > 0) {
- descr += BOOLEAN_PREFIX;
- for (String key : set)
- descr += key + "=" + getBoolean(key) + "; ";
- }
-
- set = getStringKeySet();
- if (set.size() > 0) {
- descr += STRING_PREFIX;
- for (String key : set)
- descr += key + "=" + getString(key) + "; ";
- }
-
- if (descr.endsWith("; "))
- return descr.substring(0, descr.length() - 2);
-
- return descr;
- }
-
- /**
- * Gets the iD.
- *
- * @return the iD
- */
- public int getID() {
- return id;
- }
-
- /**
- * Checks if the prefs are empty.
- *
- * @return true, if empty
- */
- public boolean isEmpty() {
- if (!colorPrefs.isEmpty())
- return false;
-
- if (!floatPrefs.isEmpty())
- return false;
-
- if (!integerPrefs.isEmpty())
- return false;
-
- if (!vectorPrefs.isEmpty())
- return false;
-
- if (!longPrefs.isEmpty())
- return false;
-
- if (!stringPrefs.isEmpty())
- return false;
-
- if (!booleanPrefs.isEmpty())
- return false;
-
- return true;
- }
-
- /**
- * Returns all full keys.
- *
- * @return All full keys
- */
- public ArrayList<String> getAllFullKeys() {
- ArrayList<String> allKeys = new ArrayList<String>();
-
- Set<String> set = null;
-
- set = getIntegerKeySet();
- for (String key : set)
- allKeys.add(INTEGER_PREFIX + key);
-
- set = getVectorKeySet();
- for (String key : set)
- allKeys.add(VECTOR_PREFIX + key);
-
- set = getLongKeySet();
- for (String key : set)
- allKeys.add(LONG_PREFIX + key);
-
- set = getFloatKeySet();
- for (String key : set)
- allKeys.add(FLOAT_PREFIX + key);
-
- set = getBooleanKeySet();
- for (String key : set)
- allKeys.add(BOOLEAN_PREFIX + key);
-
- set = getStringKeySet();
- for (String key : set)
- allKeys.add(STRING_PREFIX + key);
-
- Collections.sort(allKeys);
-
- return allKeys;
- }
-
- /**
- * Not overwrite description string defaults
- */
- /*
- public void useDefaultStrings(boolean value) {
- useDefaultStrings = value;
- }
- */
-}
diff --git a/sources/prefs/VSPrefsRestriction.java b/sources/prefs/VSPrefsRestriction.java
deleted file mode 100644
index 0709713..0000000
--- a/sources/prefs/VSPrefsRestriction.java
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs;
-
-import java.io.*;
-import java.util.Vector;
-
-/**
- * The class VSPrefsRestriction.
- */
-abstract public class VSPrefsRestriction implements Serializable {
- private static final long serialVersionUID = 2L;
-
- /**
- * The class VSIntegerPrefsRestriction.
- */
- public static class VSIntegerPrefsRestriction extends VSPrefsRestriction {
- private static final long serialVersionUID = 2L;
- /** The min value. */
- private int minValue;
-
- /** The max value. */
- private int maxValue;
-
- /**
- * Instantiates a new integer setting restriction.
- *
- * @param minValue the min value
- * @param maxValue the max value
- */
- public VSIntegerPrefsRestriction(int minValue, int maxValue) {
- this.minValue = minValue;
- this.maxValue = maxValue;
- }
-
- /**
- * Gets the min value.
- *
- * @return the min value
- */
- public int getMinValue() {
- return minValue;
- }
-
- /**
- * Gets the max value.
- *
- * @return the max value
- */
- public int getMaxValue() {
- return maxValue;
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefsRestriction#writeObject(java.io.ObjectOutputStream)
- */
- public void writeObject(ObjectOutputStream out)
- throws IOException {
- out.writeObject(new Integer(minValue));
- out.writeObject(new Integer(maxValue));
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefsRestriction#readObject(java.io.ObjectInputStream)
- */
- public void readObject(ObjectInputStream in)
- throws IOException, ClassNotFoundException {
- minValue = ((Integer) in.readObject()).intValue();
- maxValue = ((Integer) in.readObject()).intValue();
- }
- }
-
- /**
- * The class VSStringPrefsRestriction.
- */
- public static class VSStringPrefsRestriction extends VSPrefsRestriction {
- private static final long serialVersionUID = 2L;
-
- /** The possible selections. */
- Vector<String> possibleSelections;
-
- /**
- * Instantiates a new string setting restriction.
- *
- * @param possibleSelections the possible selections
- */
- public VSStringPrefsRestriction(String [] possibleSelections) {
- this.possibleSelections = new Vector<String>();
-
- for (String elem : possibleSelections)
- this.possibleSelections.add(elem);
- }
-
- /**
- * Gets the possible selections.
- *
- * @return the possible selections
- */
- public Vector<String> getPossibleSelections() {
- return possibleSelections;
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefsRestriction#writeObject(java.io.ObjectOutputStream)
- */
- public void writeObject(ObjectOutputStream out)
- throws IOException {
- out.writeObject(possibleSelections);
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefsRestriction#readObject(java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public void readObject(ObjectInputStream in)
- throws IOException, ClassNotFoundException {
- possibleSelections = (Vector<String>) in.readObject();
- }
- }
-
- /**
- * Serializes the object.
- *
- * @param out The output stream
- */
- abstract public void writeObject(ObjectOutputStream out)
- throws IOException;
-
- /**
- * Deserializes the object.
- *
- * @param in The input stream
- */
- abstract public void readObject(ObjectInputStream in)
- throws IOException, ClassNotFoundException;
-}
diff --git a/sources/prefs/VSSerializablePrefs.java b/sources/prefs/VSSerializablePrefs.java
deleted file mode 100644
index 66a2c83..0000000
--- a/sources/prefs/VSSerializablePrefs.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs;
-
-import java.io.*;
-//import java.util.*;
-
-import serialize.*;
-
-/**
- * The class VSSerializablePrefs, this class is used if the VSPrefs should
- * be serializable.
- *
- * @author Paul C. Buetow
- */
-public class VSSerializablePrefs extends VSPrefs implements VSSerializable {
- /** The Constant serialVersionUID. */
- private static final long serialVersionUID = 4L;
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- super.serialize_(serialize, objectOutputStream);
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- super.deserialize_(serialize, objectInputStream);
- }
-}
diff --git a/sources/prefs/editors/VSAbstractBetterEditor.java b/sources/prefs/editors/VSAbstractBetterEditor.java
deleted file mode 100644
index 556b14a..0000000
--- a/sources/prefs/editors/VSAbstractBetterEditor.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs.editors;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-
-import prefs.*;
-
-/**
- * The class VSAbstractBetterEditor, is an improved VSAbstractEditor.
- *
- * @author Paul C. Buetow
- */
-public abstract class VSAbstractBetterEditor extends VSAbstractEditor {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The content pane. */
- private Container contentPane;
-
- /** The info area. */
-
- /** The title. */
- private String title;
-
- /**
- * An simple constructor.
- *
- * @param prefs the prefs
- * @param prefsToEdit the prefs to edit
- * @param title the title
- */
- public VSAbstractBetterEditor(VSPrefs prefs, VSPrefs prefsToEdit,
- String title) {
- super(prefs, prefsToEdit);
- this.title = title;
- this.contentPane = createContentPane();
- }
-
- /**
- * Gets the title.
- *
- * @return the title
- */
- public String getTitle() {
- return title;
- }
-
- /**
- * Gets the content pane.
- *
- * @return the content pane
- */
- public Container getContentPane() {
- contentPane.setBackground(Color.WHITE);
- return contentPane;
- }
-
- /**
- * Creates the content pane.
- *
- * @return the j panel
- */
- private JPanel createContentPane() {
- JPanel panel = new JPanel();
- panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
-
- JPanel editPanel = getEditPanel();
- JPanel buttonPanel = getButtonPanel();
-
- panel.add(editPanel);
- panel.add(buttonPanel);
-
- return panel;
- }
-
- /* (non-Javadoc)
- * @see prefs.editors.VSAbstractEditor#addToButtonPanelFront(
- * javax.swing.JPanel)
- */
- protected void addToButtonPanelFront(JPanel buttonPanel) { }
-
- /* (non-Javadoc)
- * @see prefs.editors.VSAbstractEditor#addToButtonPanelLast(
- * javax.swing.JPanel)
- */
- protected void addToButtonPanelLast(JPanel buttonPanel) { }
-
- /* (non-Javadoc)
- * @see prefs.editors.VSAbstractEditor#addToEditTableLast()
- */
- protected void addToEditTableLast() { }
-
- /* (non-Javadoc)
- * @see prefs.editors.VSAbstractEditor#actionPerformed(
- * java.awt.event.ActionEvent)
- */
- public void actionPerformed(ActionEvent e) {
- //String actionCommand = e.getActionCommand();
- /* More action in the super class!!! */
- super.actionPerformed(e);
- }
-}
diff --git a/sources/prefs/editors/VSAbstractEditor.java b/sources/prefs/editors/VSAbstractEditor.java
deleted file mode 100644
index 6118c7e..0000000
--- a/sources/prefs/editors/VSAbstractEditor.java
+++ /dev/null
@@ -1,1061 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs.editors;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-import java.util.*;
-
-import utils.*;
-import prefs.*;
-
-/**
- * The class VSAbstractEditor, an object of this class is used in order to
- * edit a VSPrefs object.
- *
- * @author Paul C. Buetow
- */
-public abstract class VSAbstractEditor implements ActionListener {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The boolean keys. */
- private ArrayList<String> booleanKeys;
-
- /** The color keys. */
- private ArrayList<String> colorKeys;
-
- /** The float keys. */
- private ArrayList<String> floatKeys;
-
- /** The integer keys. */
- private ArrayList<String> integerKeys;
-
- /** The vector keys. */
- private ArrayList<String> vectorKeys;
-
- /** The long keys. */
- private ArrayList<String> longKeys;
-
- /** The string keys. */
- private ArrayList<String> stringKeys;
-
- /** The boolean fields. */
- private HashMap<String,JCheckBox> booleanFields;
-
- /** The integer fields. */
- private HashMap<String,JComboBox> integerFields;
-
- /** The vector fields. */
- private HashMap<String,JTextField> vectorFields;
-
- /** The color fields. */
- private HashMap<String,JTextField> colorFields;
-
- /** The float fields. */
- private HashMap<String,JTextField> floatFields;
-
- /** The long fields. */
- private HashMap<String,JTextField> longFields;
-
- /** The string fields. */
- private HashMap<String,JTextField> stringFields;
-
- /** The prefs to edit map. */
- private HashMap<String,VSPrefs> prefsToEditMap;
-
- /** The button panel. */
- private JPanel buttonPanel;
-
- /** The edit panel. */
- private JPanel editPanel;
-
- /** The edit table. */
- private VSEditorTable editTable;
-
- /** The frame. */
- private VSFrame frame;
-
- /** The expert mode changed. */
- private boolean expertModeChanged;
-
- /** The prefs. */
- protected VSPrefs prefs;
-
- /** The prefs to edit. */
- protected VSPrefs prefsToEdit;
-
- /** The Constant MIN_UNIT_LENGTH. */
- protected static final int MIN_UNIT_LENGTH = 5;
-
- /** The Constant VALUE_FIELD_COLS. */
- protected static final int VALUE_FIELD_COLS = 9;
-
- /** The Constant ALL_PREFERENCES. */
- public static final int ALL_PREFERENCES = 0;
-
- /** The Constant SIMULATION_PREFERENCES. */
- public static final int SIMULATION_PREFERENCES = 1;
-
- /**
- * The standard constructor.
- *
- * @param prefs the prefs
- * @param prefsToEdit the prefs to edit
- */
- public VSAbstractEditor(VSPrefs prefs, VSPrefs prefsToEdit) {
- init(prefs, prefsToEdit);
- }
-
- /**
- * Adds components to the front of the button panel .
- *
- * @param buttonPanel the button panel
- */
- abstract protected void addToButtonPanelFront(JPanel buttonPanel);
-
- /**
- * Adds components to last of the button panel.
- *
- * @param buttonPanel the button panel
- */
- abstract protected void addToButtonPanelLast(JPanel buttonPanel);
-
- /**
- * Adds the to edit table last.
- */
- abstract protected void addToEditTableLast();
-
- /**
- * Sets the default prefs.
- *
- * @param prefs the new prefs
- */
- public void setPrefs(VSPrefs prefs) {
- this.prefs = prefs;
- }
-
- /**
- * Sets the prefs to edit.
- *
- * @param prefsToEdit the new prefs to edit
- */
- public void setPrefsToEdit(VSPrefs prefsToEdit) {
- this.prefsToEdit = prefsToEdit;
- }
-
- /**
- * Sets the frame being used by the editor, if any.
- *
- * @param frame the new frame
- */
- public void setFrame(VSFrame frame) {
- this.frame = frame;
- }
-
- /**
- * Gets the frame.
- *
- * @return the frame
- */
- public VSFrame getFrame() {
- return frame;
- }
-
- /**
- * The given editors frame will get disposed if the "OK" button has been
- * pressed. This can only happen if the editor has its own frame.
- */
- protected void disposeFrameIfExists() {
- if (frame != null)
- frame.dispose();
- }
-
- /**
- * The given editors frame will get disposed if its parent component
- * disposes. This can only happen if the editor has its own frame.
- */
- protected void disposeFrameWithParentIfExists() {
- if (frame != null)
- frame.disposeWithParent();
- }
-
- /**
- * Inits the editor.
- *
- * @param prefs the prefs
- * @param prefsToEdit the prefs to edit
- */
- private void init(VSPrefs prefs, VSPrefs prefsToEdit) {
- this.prefs = prefs;
- this.prefsToEdit = prefsToEdit;
-
- editPanel = createEditPanel();
- buttonPanel = createButtonPanel();
-
- prefsToEditMap = new HashMap<String,VSPrefs>();
-
- colorFields = new HashMap<String,JTextField>();
- floatFields = new HashMap<String,JTextField>();
- integerFields = new HashMap<String,JComboBox>();
- vectorFields = new HashMap<String,JTextField>();
- longFields = new HashMap<String,JTextField>();
- booleanFields = new HashMap<String,JCheckBox>();
- stringFields = new HashMap<String,JTextField>();
-
- colorKeys = filterKeys(prefsToEdit.getColorKeySet());
- floatKeys = filterKeys(prefsToEdit.getFloatKeySet());
- integerKeys = filterKeys(prefsToEdit.getIntegerKeySet());
- vectorKeys = filterKeys(prefsToEdit.getVectorKeySet());
- longKeys = filterKeys(prefsToEdit.getLongKeySet());
- booleanKeys = filterKeys(prefsToEdit.getBooleanKeySet());
- stringKeys = filterKeys(prefsToEdit.getStringKeySet());
-
- fillEditPanelFront(prefsToEdit);
- fillEditPanel(prefsToEdit);
- }
-
- /**
- * Filters out all keys to edit.
- *
- * @param set the set which contains all keys of a given hash
- *
- * @return the filtered keys
- */
- private ArrayList<String> filterKeys(Set<String> set) {
- ArrayList<String> filtered = new ArrayList<String>();
- boolean expertMode = prefs.getBoolean("sim.mode.expert");
-
- for (String elem : set) {
- if (!elem.startsWith("lang.en.") && !elem.startsWith("keyevent.")) {
- if (expertMode)
- filtered.add(elem);
- else if (!elem.startsWith("col.") && (!elem.startsWith("div.")))
- filtered.add(elem);
- }
- }
-
- return filtered;
- }
-
- /**
- * Creates the button panel.
- *
- * @return the panel
- */
- private JPanel createButtonPanel() {
- JPanel buttonPanel = new JPanel();
- buttonPanel.setBackground(Color.WHITE);
- addToButtonPanelFront(buttonPanel);
-
- JButton resetButton = new JButton(
- prefs.getString("lang.en.reset"));
- resetButton.setMnemonic(prefs.getInteger("keyevent.reset"));
- resetButton.addActionListener(this);
- buttonPanel.add(resetButton);
-
- addToButtonPanelLast(buttonPanel);
-
- return buttonPanel;
- }
-
- /**
- * Creates the unit panel.
- *
- * @param comp the comp
- * @param key the key
- *
- * @return the panel
- */
- private JPanel createUnitPanel(VSPrefs prefsToEdit, Component comp,
- String fullKey) {
- JPanel unitPanel = new JPanel(new GridBagLayout());
- unitPanel.setBackground(Color.WHITE);
- unitPanel.setBorder(null);
-
- String unitText = prefsToEdit.getUnit(fullKey);
- if (unitText == null)
- unitText = "";
-
- unitText = " " + unitText;
- while (unitText.length() < MIN_UNIT_LENGTH)
- unitText = unitText + " ";
- JLabel unitLabel = new JLabel(unitText);
-
- unitPanel.setLayout(new BoxLayout(unitPanel, BoxLayout.X_AXIS));
- unitPanel.add(comp);
- unitPanel.add(unitLabel);
-
- return unitPanel;
- }
-
- /**
- * Creates the edit panel.
- *
- * @return the panel
- */
- private JPanel createEditPanel() {
- JPanel editPanel = new JPanel();
- editPanel.setLayout(new BoxLayout(editPanel, BoxLayout.Y_AXIS));
- editPanel.setBackground(Color.WHITE);
-
- editTable = new VSEditorTable(prefs);
- JScrollPane scrollPane = new JScrollPane(editTable);
- editPanel.add(scrollPane);
-
- return editPanel;
- }
-
- /**
- * Creates the integer component.
- *
- * @param fullKey the full key
- * @param key the key
- * @param prefsToEdit the prefs to edit
- *
- * @return the tupel representing the component
- */
- protected VS3Tupel<String,Component,JComboBox> createIntegerComponent(
- String fullKey, String key, VSPrefs prefsToEdit) {
- String descr = prefs.getDescription(fullKey);
- if (descr == null)
- descr = prefsToEdit.getDescription(fullKey);
- String label = descr == null ? fullKey : descr;
- Integer integer = prefsToEdit.getInteger(key);
- Integer initialSelection[] = { integer };
- JComboBox valComboBox = new JComboBox(initialSelection);
- VSPrefsRestriction settingRestriction =
- prefsToEdit.getRestriction(fullKey);
-
- int minValue, maxValue;
- if (settingRestriction != null) {
- VSPrefsRestriction.VSIntegerPrefsRestriction
- integerVSPrefsRestriction =
- (VSPrefsRestriction.VSIntegerPrefsRestriction)
- settingRestriction;
- minValue = integerVSPrefsRestriction.getMinValue();
- maxValue = integerVSPrefsRestriction.getMaxValue();
-
- } else {
- minValue = 0;
- maxValue = 100;
- }
-
- for (int i = minValue; i <= maxValue; ++i)
- valComboBox.addItem(new Integer(i));
- valComboBox.setBorder(null);
-
- return new VS3Tupel<String,Component,JComboBox>(label,
- createUnitPanel(prefsToEdit, valComboBox, fullKey),
- valComboBox);
- }
-
- /**
- * Creates the vector component.
- *
- * @param fullKey the full key
- * @param key the key
- * @param prefsToEdit the prefs to edit
- *
- * @return the tupel representing the component
- */
- protected VS3Tupel<String,Component,JTextField> createVectorComponent(
- String fullKey, String key, VSPrefs prefsToEdit) {
- String descr = prefs.getDescription(fullKey);
- if (descr == null)
- descr = prefsToEdit.getDescription(fullKey);
- String label = descr == null ? fullKey : descr;
-
- Vector<Integer> vec = prefsToEdit.getVector(key);
- JTextField valField = new JTextField();
- valField.setBorder(null);
- valField.setText(vec.toString());
-
- return new VS3Tupel<String,Component,JTextField>(label,
- createUnitPanel(prefsToEdit, valField, fullKey), valField);
- }
-
- /**
- * Creates the boolean component.
- *
- * @param fullKey the full key
- * @param key the key
- * @param prefsToEdit the prefs to edit
- */
- protected VS3Tupel<String,Component,JCheckBox> createBooleanComponent(
- String fullKey, String key, VSPrefs prefsToEdit) {
- final String activated = prefs.getString("lang.en.activated");
- String descr = prefs.getDescription(fullKey);
- if (descr == null)
- descr = prefsToEdit.getDescription(fullKey);
- String label = descr == null ? fullKey : descr;
- JCheckBox valField = new JCheckBox(activated,
- prefsToEdit.getBoolean(key));
- valField.setBackground(Color.WHITE);
- valField.setBorder(null);
- return new VS3Tupel<String,Component,JCheckBox>(label,
- createUnitPanel(prefsToEdit, valField, fullKey), valField);
- }
-
- /**
- * Creates the long component.
- *
- * @param fullKey the full key
- * @param key the key
- * @param prefsToEdit the prefs to edit
- *
- * @return the tupel representing the component
- */
- protected VS3Tupel<String,Component,JTextField> createLongComponent(
- String fullKey, String key, VSPrefs prefsToEdit) {
- String descr = prefs.getDescription(fullKey);
- if (descr == null)
- descr = prefsToEdit.getDescription(fullKey);
- String label = descr == null ? fullKey : descr;
- JTextField valField = new JTextField(VALUE_FIELD_COLS);
- valField.addKeyListener(new java.awt.event.KeyAdapter() {
- public void keyTyped(java.awt.event.KeyEvent e) {
- JTextField valField = (JTextField)e.getSource();
- if (valField.getText().length() >= valField.getColumns() + 10)
- e.consume();
- }
- });
- valField.setText(""+prefsToEdit.getLong(key));
- valField.setBorder(null);
- return new VS3Tupel<String,Component,JTextField>(label,
- createUnitPanel(prefsToEdit, valField, fullKey), valField);
- }
-
- /**
- * Creates the float component.
- *
- * @param fullKey the full key
- * @param key the key
- * @param prefsToEdit the prefs to edit
- *
- * @return the tupel representing the component
- */
- protected VS3Tupel<String,Component,JTextField> createFloatComponent(
- String fullKey, String key, VSPrefs prefsToEdit) {
- String descr = prefs.getDescription(fullKey);
- if (descr == null)
- descr = prefsToEdit.getDescription(fullKey);
- String label = descr == null ? fullKey : descr;
- JTextField valField = new JTextField(VALUE_FIELD_COLS);
- valField.addKeyListener(new java.awt.event.KeyAdapter() {
- public void keyTyped(java.awt.event.KeyEvent e) {
- JTextField valField = (JTextField)e.getSource();
- if (valField.getText().length() >= valField.getColumns() + 10)
- e.consume();
- }
- });
- valField.setText(""+prefsToEdit.getFloat(key));
- valField.setBorder(null);
- return new VS3Tupel<String,Component,JTextField>(label,
- createUnitPanel(prefsToEdit, valField, fullKey), valField);
- }
-
- /**
- * Creates the color component.
- *
- * @param fullKey the full key
- * @param key the key
- * @param prefsToEdit the prefs to edit
- *
- * @return the tupel representing the component
- */
- protected VS3Tupel<String,Component,JTextField> createColorComponent(
- String fullKey, String key, final VSPrefs prefsToEdit) {
- String descr = prefs.getDescription(fullKey);
- if (descr == null)
- descr = prefsToEdit.getDescription(fullKey);
- String label = descr == null ? fullKey : descr;
- final JTextField valField = new JTextField(VALUE_FIELD_COLS);
- Color color = prefsToEdit.getColor(key);
- valField.setBackground(color);
- valField.setEditable(false);
- valField.addMouseListener(new MouseListener() {
- public void mouseExited(MouseEvent e) { }
- public void mouseReleased(MouseEvent e) { }
- public void mouseEntered(MouseEvent e) { }
- public void mousePressed(MouseEvent e) { }
- public void mouseClicked(MouseEvent e) {
- JFrame parentFrame = getFrame();
- JFrame frame = new VSFrame(
- prefs.getString("lang.en.name") + " - " +
- prefs.getString(
- "lang.en.colorchooser"),parentFrame);
- frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-
- JComponent colorChooserPane = new VSColorChooser(prefs,
- valField);
- colorChooserPane.setOpaque(true);
-
- frame.setContentPane(colorChooserPane);
- frame.pack();
- frame.setVisible(true);
- }
- });
- valField.setBorder(null);
- return new VS3Tupel<String,Component,JTextField>(label,
- createUnitPanel(prefsToEdit, valField, fullKey), valField);
- }
-
- /**
- * Creates the string component.
- *
- * @param fullKey the full key
- * @param key the key
- * @param prefsToEdit the prefs to edit
- *
- * @return the tupel representing the component
- */
- protected VS3Tupel<String,Component,JTextField> createStringComponent(
- String fullKey, String key, VSPrefs prefsToEdit) {
- String descr = prefs.getDescription(fullKey);
- if (descr == null)
- descr = prefsToEdit.getDescription(fullKey);
- String label = descr == null ? fullKey : descr;
- JTextField valField = new JTextField(VALUE_FIELD_COLS);
- valField.addKeyListener(new java.awt.event.KeyAdapter() {
- public void keyTyped(java.awt.event.KeyEvent e) {
- JTextField valField = (JTextField)e.getSource();
- if (valField.getText().length() >= valField.getColumns() + 10)
- e.consume();
- }
- });
- valField.setText(prefsToEdit.getString(key));
- valField.setBorder(null);
- return new VS3Tupel<String,Component,JTextField>(label,
- createUnitPanel(prefsToEdit, valField, fullKey), valField);
- }
-
- /**
- * Fills the edit panel at the front. May be overloaded by another class.
- *
- * @param prefsToEdit the prefs to edit
- */
- protected void fillEditPanelFront(VSPrefs prefsToEdit) {
- }
-
- /**
- * Fills the edit panel.
- *
- * @param prefsToEdit the prefs to edit
- */
- private void fillEditPanel(VSPrefs prefsToEdit) {
- HashMap<String,Component> components = new HashMap<String,Component>();
- HashMap<String,String> labels = new HashMap<String,String>();
-
- for (String key : integerKeys) {
- String fullKey = VSPrefs.INTEGER_PREFIX + key;
- VS3Tupel<String,Component,JComboBox> tupel =
- createIntegerComponent(fullKey, key, prefsToEdit);
- labels.put(fullKey, tupel.getA());
- components.put(fullKey, tupel.getB());
- integerFields.put(key, tupel.getC());
- }
-
- for (String key : vectorKeys) {
- String fullKey = VSPrefs.VECTOR_PREFIX + key;
- VS3Tupel<String,Component,JTextField> tupel =
- createVectorComponent(fullKey, key, prefsToEdit);
- labels.put(fullKey, tupel.getA());
- components.put(fullKey, tupel.getB());
- vectorFields.put(key, tupel.getC());
- }
-
- for (String key : booleanKeys) {
- String fullKey = VSPrefs.BOOLEAN_PREFIX + key;
- VS3Tupel<String,Component,JCheckBox> tupel =
- createBooleanComponent(fullKey, key, prefsToEdit);
- labels.put(fullKey, tupel.getA());
- components.put(fullKey, tupel.getB());
- booleanFields.put(key, tupel.getC());
- }
-
- for (String key : longKeys) {
- String fullKey = VSPrefs.LONG_PREFIX + key;
- VS3Tupel<String,Component,JTextField> tupel =
- createLongComponent(fullKey, key, prefsToEdit);
- labels.put(fullKey, tupel.getA());
- components.put(fullKey, tupel.getB());
- longFields.put(key, tupel.getC());
- }
-
-
- for (String key : floatKeys) {
- String fullKey = VSPrefs.FLOAT_PREFIX + key;
- VS3Tupel<String,Component,JTextField> tupel =
- createFloatComponent(fullKey, key, prefsToEdit);
- labels.put(fullKey, tupel.getA());
- components.put(fullKey, tupel.getB());
- floatFields.put(key, tupel.getC());
- }
-
-
- for (String key : colorKeys) {
- String fullKey = VSPrefs.COLOR_PREFIX + key;
- VS3Tupel<String,Component,JTextField> tupel =
- createColorComponent(fullKey, key, prefsToEdit);
- labels.put(fullKey, tupel.getA());
- components.put(fullKey, tupel.getB());
- colorFields.put(key, tupel.getC());
- }
-
- for (String key : stringKeys) {
- String fullKey = VSPrefs.STRING_PREFIX + key;
- VS3Tupel<String,Component,JTextField> tupel =
- createStringComponent(fullKey, key, prefsToEdit);
- labels.put(fullKey, tupel.getA());
- components.put(fullKey, tupel.getB());
- stringFields.put(key, tupel.getC());
- }
-
- ArrayList<String> fullKeys = new ArrayList<String>();
- fullKeys.addAll(components.keySet());
- Collections.sort(fullKeys);
-
- boolean flag = false;
- for (String fullKey : fullKeys) {
- String key = fullKey.substring(fullKey.indexOf(' ')+1);
- if (key.startsWith("sim.")) {
- if (!flag) {
- flag = true;
- addSeparator(prefs.getString("lang.en.prefs.simulator"));
- }
- addVariable(labels.get(fullKey), components.get(fullKey),
- prefsToEdit);
- }
- }
-
- flag = false;
- for (String fullKey : fullKeys) {
- String key = fullKey.substring(fullKey.indexOf(' ')+1);
- if (key.startsWith("process.")) {
- if (!flag) {
- flag = true;
- if (this instanceof VSProcessEditor)
- addSeparator(prefs.getString("lang.en.prefs.process"));
- else
- addSeparator(prefs.getString(
- "lang.en.prefs.process.defaults"));
- }
- addVariable(labels.get(fullKey), components.get(fullKey),
- prefsToEdit);
- }
- }
-
- flag = false;
- for (String fullKey : fullKeys) {
- String key = fullKey.substring(fullKey.indexOf(' ')+1);
- if (key.startsWith("message.")) {
- if (!flag) {
- flag = true;
- if (this instanceof VSProcessEditor)
- addSeparator(prefs.getString(
- "lang.en.prefs.message"));
- else
- addSeparator(prefs.getString(
- "lang.en.prefs.message.defaults"));
- }
- addVariable(labels.get(fullKey), components.get(fullKey),
- prefsToEdit);
- }
- }
-
- flag = false;
- for (String fullKey : fullKeys) {
- String key = fullKey.substring(fullKey.indexOf(' ')+1);
- if (key.startsWith("col.")) {
- if (!flag) {
- flag = true;
- addSeparator(prefs.getString("lang.en.prefs.color"));
- }
- addVariable(labels.get(fullKey), components.get(fullKey),
- prefsToEdit);
- }
- }
-
- flag = false;
- for (String fullKey : fullKeys) {
- String key = fullKey.substring(fullKey.indexOf(' ')+1);
- if (key.startsWith("div.")) {
- if (!flag) {
- flag = true;
- addSeparator(prefs.getString("lang.en.prefs.diverse"));
- }
- addVariable(labels.get(fullKey), components.get(fullKey),
- prefsToEdit);
- }
- }
-
- addToEditTableLast();
- editTable.fireTableDataChanged();
- }
-
- /**
- * Filters out stuff.
- *
- * @param set The set to filter stuff out from
- * @param filter Only return elemens of the filter which are in the set
- * @param prefix The prefix to use
- *
- * @return The filtered keys
- */
- private ArrayList<String> filterOut(Set<String> set,
- ArrayList<String> filter,
- String prefix) {
- ArrayList<String> ret = new ArrayList<String>();
-
- for (String key : set) {
- String fullKey = prefix + key;
- if (filter.contains(fullKey))
- ret.add(fullKey);
- }
-
- return ret;
- }
-
- /**
- * Adds the to editor more variables.
- *
- * @param label the label
- * @param prefsKey the prefs key
- * @param prefsToAdd the prefs to add
- * @param addOnlyThisVariables only add variables which are in this list
- */
- protected void addToEditor(String label, String prefsKey,
- VSPrefs prefsToAdd,
- ArrayList<String> addOnlyThisVariables) {
- addSeparator(label);
- prefsKey = "(" + prefsKey + ")";
-
- ArrayList<String> fullKeys = new ArrayList<String>();
-
- fullKeys.addAll(filterOut(prefsToAdd.getIntegerKeySet(),
- addOnlyThisVariables,
- VSPrefs.INTEGER_PREFIX));
- fullKeys.addAll(filterOut(prefsToAdd.getVectorKeySet(),
- addOnlyThisVariables,
- VSPrefs.VECTOR_PREFIX));
- fullKeys.addAll(filterOut(prefsToAdd.getFloatKeySet(),
- addOnlyThisVariables,
- VSPrefs.FLOAT_PREFIX));
- fullKeys.addAll(filterOut(prefsToAdd.getLongKeySet(),
- addOnlyThisVariables,
- VSPrefs.LONG_PREFIX));
- fullKeys.addAll(filterOut(prefsToAdd.getBooleanKeySet(),
- addOnlyThisVariables,
- VSPrefs.BOOLEAN_PREFIX));
- fullKeys.addAll(filterOut(prefsToAdd.getStringKeySet(),
- addOnlyThisVariables,
- VSPrefs.STRING_PREFIX));
-
- Collections.sort(fullKeys);
-
- for (String fullKey : fullKeys) {
- String key = fullKey.substring(fullKey.indexOf(": ") + 2);
- if (fullKey.startsWith(VSPrefs.INTEGER_PREFIX)) {
- VS3Tupel<String,Component,JComboBox> tupel =
- createIntegerComponent(fullKey, key, prefsToAdd);
- this.integerKeys.add(prefsKey+key);
- this.integerFields.put(prefsKey+key, tupel.getC());
- addVariable(prefsKey, tupel.getA(), tupel.getB(), prefsToAdd);
-
- } else if (fullKey.startsWith(VSPrefs.VECTOR_PREFIX)) {
- VS3Tupel<String,Component,JTextField> tupel =
- createVectorComponent(fullKey, key, prefsToAdd);
- this.vectorKeys.add(prefsKey+key);
- this.vectorFields.put(prefsKey+key, tupel.getC());
- addVariable(prefsKey, tupel.getA(), tupel.getB(), prefsToAdd);
-
- } else if (fullKey.startsWith(VSPrefs.BOOLEAN_PREFIX)) {
- VS3Tupel<String,Component,JCheckBox> tupel =
- createBooleanComponent(fullKey, key, prefsToAdd);
- this.booleanKeys.add(prefsKey + key);
- this.booleanFields.put(prefsKey+key, tupel.getC());
- addVariable(prefsKey, tupel.getA(), tupel.getB(), prefsToAdd);
-
- } else if (fullKey.startsWith(VSPrefs.LONG_PREFIX)) {
- VS3Tupel<String,Component,JTextField> tupel =
- createLongComponent(fullKey, key, prefsToAdd);
- this.longKeys.add(prefsKey+key);
- this.longFields.put(prefsKey+key, tupel.getC());
- addVariable(prefsKey, tupel.getA(), tupel.getB(), prefsToAdd);
-
- } else if (fullKey.startsWith(VSPrefs.FLOAT_PREFIX)) {
- VS3Tupel<String,Component,JTextField> tupel =
- createFloatComponent(fullKey, key, prefsToAdd);
- this.floatKeys.add(prefsKey + key);
- this.floatFields.put(prefsKey+key, tupel.getC());
- addVariable(prefsKey, tupel.getA(), tupel.getB(), prefsToAdd);
-
- } else if (fullKey.startsWith(VSPrefs.STRING_PREFIX)) {
- VS3Tupel<String,Component,JTextField> tupel =
- createStringComponent(fullKey, key, prefsToAdd);
- this.stringKeys.add(prefsKey + key);
- this.stringFields.put(prefsKey+key, tupel.getC());
- addVariable(prefsKey, tupel.getA(), tupel.getB(), prefsToAdd);
- }
- }
- }
-
- /**
- * Adds a separator.
- *
- * @param label the label
- */
- protected void addSeparator(String label) {
- editTable.addSeparator(label);
- }
-
- /**
- * Adds a variable.
- *
- * @param label the label
- * @param component the component
- * @param prefs the prefs
- */
- private void addVariable(String label, Component component, VSPrefs prefs) {
- addVariable("", label, component, prefs);
- }
-
- /**
- * Adds a variable.
- *
- * @param prefsKey the prefs key
- * @param label the label
- * @param component the component
- * @param prefs the prefs
- */
- private void addVariable(String prefsKey, String label,
- Component component, VSPrefs prefs) {
- prefsToEditMap.put(prefsKey, prefs);
- editTable.addVariable(label, component);
- }
-
- /**
- * Reset edit panel.
- */
- protected void resetPrefs() {
- for (String key : integerKeys) {
- JComboBox valComboBox = integerFields.get(key);
- valComboBox.setSelectedIndex(0);
- }
-
- for (String key : booleanKeys) {
- String keys[] = getKeys(key);
- JCheckBox valField = booleanFields.get(key);
- valField.setSelected(prefsToEditMap.get(
- keys[1]).getBoolean(keys[0]));
- }
-
- for (String key : vectorKeys) {
- String keys[] = getKeys(key);
- JTextField valField = vectorFields.get(key);
- valField.setText(""+prefsToEditMap.get(keys[1]).getVector(keys[0]));
- }
-
- for (String key : floatKeys) {
- String keys[] = getKeys(key);
- JTextField valField = floatFields.get(key);
- valField.setText(""+prefsToEditMap.get(keys[1]).getFloat(keys[0]));
- }
-
- for (String key : longKeys) {
- String keys[] = getKeys(key);
- JTextField valField = longFields.get(key);
- valField.setText(""+prefsToEditMap.get(keys[1]).getLong(keys[0]));
- }
-
- for (String key : colorKeys) {
- String keys[] = getKeys(key);
- JTextField valField = colorFields.get(key);
- valField.setBackground(prefsToEditMap.get(
- keys[1]).getColor(keys[0]));
- }
-
- for (String key : stringKeys) {
- String keys[] = getKeys(key);
- JTextField valField = stringFields.get(keys);
- valField.setText(prefsToEditMap.get(keys[1]).getString(keys[0]));
- }
- }
-
- /**
- * Gets the keys.
- *
- * @param key the key
- *
- * @return [0] := key, [1] := prefsKey
- */
- private String[] getKeys(String key) {
- String keys[] = { key, "" };
-
- if (key.startsWith("(")) {
- keys[1] = key.substring(0, key.indexOf(")") + 1);
- keys[0] = key.substring(key.indexOf(")")+1);
- }
-
- return keys;
- }
-
- /**
- * Saves the prefs.
- */
- protected void savePrefs() {
- boolean expertMode = prefs.getBoolean("sim.mode.expert");
-
- for (String key : integerKeys) {
- String keys[] = getKeys(key);
- JComboBox valComboBox = integerFields.get(key);
- prefsToEditMap.get(
- keys[1]).setInteger(keys[0],
- (Integer) valComboBox.getSelectedItem());
- }
-
- for (String key : vectorKeys) {
- String keys[] = getKeys(key);
- JTextField valField = vectorFields.get(key);
-
- try {
- String val = valField.getText();
- Vector<Integer> vec = utils.VSTools.parseIntegerVector(val);
- prefsToEditMap.get(keys[1]).setVector(keys[0], vec);
- } catch (exceptions.VSParseIntegerVectorException e) {
- }
-
- valField.setText(""+
- prefsToEditMap.get(keys[1]).getVector(keys[0]));
- }
-
- for (String key : booleanKeys) {
- String keys[] = getKeys(key);
- JCheckBox valField = booleanFields.get(key);
- prefsToEditMap.get(keys[1]).setBoolean(
- keys[0], valField.isSelected());
- }
-
- for (String key : floatKeys) {
- String keys[] = getKeys(key);
- JTextField valField = floatFields.get(key);
-
- try {
- Float val = Float.valueOf(valField.getText());
- prefsToEditMap.get(keys[1]).setFloat(keys[0], val);
-
- } catch (NumberFormatException e) {
- valField.setText(""+
- prefsToEditMap.get(keys[1]).getFloat(keys[0]));
- }
- }
-
- for (String key : longKeys) {
- String keys[] = getKeys(key);
- JTextField valField = longFields.get(key);
-
- try {
- Long val = Long.valueOf(valField.getText());
- prefsToEditMap.get(keys[1]).setLong(keys[0], val);
-
- } catch (NumberFormatException e) {
- valField.setText(""+
- prefsToEditMap.get(keys[1]).getLong(keys[0]));
- }
- }
-
- for (String key : colorKeys) {
- String keys[] = getKeys(key);
- JTextField valField = colorFields.get(key);
- prefsToEditMap.get(keys[1]).setColor(
- keys[0], valField.getBackground());
- }
-
- for (String key : stringKeys) {
- String keys[] = getKeys(key);
- JTextField valField = stringFields.get(key);
- prefsToEditMap.get(keys[1]).setString(keys[0], valField.getText());
- }
-
- expertModeChanged = expertMode != prefs.getBoolean("sim.mode.expert");
- }
-
- /**
- * Check if the expert mode has changed.
- *
- * @return true, if it has changed. false, if it has not changed.
- */
- public boolean expertModeChanged() {
- boolean ret = expertModeChanged;
-
- if (expertModeChanged)
- expertModeChanged = false;
-
- return ret;
- }
-
- /* (non-Javadoc)
- * @see java.awt.event.ActionListener#actionPerformed(
- * java.awt.event.ActionEvent)
- */
- public void actionPerformed(ActionEvent e) {
- String actionCommand = e.getActionCommand();
-
- if (actionCommand.equals(prefs.getString("lang.en.takeover"))) {
- savePrefs();
-
- } else if (actionCommand.equals(prefs.getString("lang.en.reset"))) {
- resetPrefs();
- }
- }
-
- /**
- * Gets the edit panel
- *
- * @return the edit panel
- */
- public JPanel getEditPanel() {
- return editPanel;
- }
-
- /**
- * Gets the edit table
- *
- * @return the edit table
- */
- public VSEditorTable getEditTable() {
- return editTable;
- }
-
- /**
- * Gets the button panel.
- *
- * @return the button panel
- */
- public JPanel getButtonPanel() {
- return buttonPanel;
- }
-}
diff --git a/sources/prefs/editors/VSColorChooser.java b/sources/prefs/editors/VSColorChooser.java
deleted file mode 100644
index 619bc17..0000000
--- a/sources/prefs/editors/VSColorChooser.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs.editors;
-
-import java.awt.*;
-import javax.swing.*;
-import javax.swing.event.*;
-
-import prefs.VSPrefs;
-
-/**
- * The class VSColorChooser, is for selecting a color within an editor.
- *
- * @author Paul C. Buetow
- */
-public class VSColorChooser extends JPanel implements ChangeListener {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The color chooser. */
- protected JColorChooser colorChooser;
-
- /** The color. */
- private Color color;
-
- /** The val field. */
- private JTextField valField;
-
- /**
- * Instantiates a new VSColorChooser object.
- *
- * @param prefs the prefs
- * @param valField the val field
- */
- public VSColorChooser(VSPrefs prefs, JTextField valField) {
- super(new BorderLayout());
- this.color = valField.getBackground();
- this.valField = valField;
-
- colorChooser = new JColorChooser(Color.yellow);
- colorChooser.setColor(color);
- colorChooser.getSelectionModel().addChangeListener(this);
- colorChooser.setBorder(BorderFactory.createTitledBorder(
- prefs.getString("lang.en.colorchooser2")));
- add(colorChooser, BorderLayout.CENTER);
- }
-
- /* (non-Javadoc)
- * @see javax.swing.event.ChangeListener#stateChanged(
- * javax.swing.event.ChangeEvent)
- */
- public void stateChanged(ChangeEvent e) {
- Color newColor = colorChooser.getColor();
- valField.setBackground(newColor);
- valField.repaint();
- }
-}
diff --git a/sources/prefs/editors/VSEditorFrame.java b/sources/prefs/editors/VSEditorFrame.java
deleted file mode 100644
index 855bf0a..0000000
--- a/sources/prefs/editors/VSEditorFrame.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs.editors;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-
-import prefs.*;
-import utils.*;
-
-/**
- * The class VSEditorFrame, this is a wrapper around an VSAbstractEditor
- * object, which should be displayed in its own frame.
- *
- * @author Paul C. Buetow
- */
-public class VSEditorFrame extends VSFrame implements ActionListener {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The editor. */
- private VSAbstractBetterEditor editor;
-
- /** The prefs. */
- private VSPrefs prefs;
-
- /**
- * Instantiates a new VSEditorFrame object.
- *
- * @param prefs the prefs
- * @param relativeTo the relative to
- * @param editor the editor
- */
- public VSEditorFrame(VSPrefs prefs, Component relativeTo,
- VSAbstractBetterEditor editor) {
- super(editor.getTitle(), relativeTo);
- this.prefs = prefs;
- this.editor = editor;
- init();
- }
-
- /**
- * Inits the VSEditorFrame object.
- */
- private void init() {
- editor.setFrame(this);
- fillButtonPanel(editor.getButtonPanel());
- setContentPane(editor.getContentPane());
- setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- setSize(prefs.getInteger("div.window.prefs.xsize"),
- prefs.getInteger("div.window.prefs.ysize"));
- setResizable(false);
- setVisible(true);
- }
-
- /**
- * Fills the button panel.
- *
- * @param buttonPanel the button panel
- */
- private void fillButtonPanel(JPanel buttonPanel) {
- JButton okButton = new JButton(
- prefs.getString("lang.en.ok"));
- okButton.setMnemonic(prefs.getInteger("keyevent.ok"));
- okButton.addActionListener(this);
- buttonPanel.add(okButton, 0);
-
- JButton cancelButton = new JButton(
- prefs.getString("lang.en.cancel"));
- cancelButton.setMnemonic(prefs.getInteger("keyevent.cancel"));
- cancelButton.addActionListener(this);
- buttonPanel.add(cancelButton, 1);
- buttonPanel.repaint();
- }
-
- /* (non-Javadoc)
- * @see java.awt.event.ActionListener#actionPerformed(
- * java.awt.event.ActionEvent)
- */
- public void actionPerformed(ActionEvent e) {
- String actionCommand = e.getActionCommand();
-
- if (actionCommand.equals(prefs.getString("lang.en.ok"))) {
- editor.actionPerformed(e);
- dispose();
-
- } else if (actionCommand.equals(prefs.getString("lang.en.cancel"))) {
- editor.actionPerformed(e);
- dispose();
-
- } else {
- editor.actionPerformed(e);
- }
- }
-}
diff --git a/sources/prefs/editors/VSEditorTable.java b/sources/prefs/editors/VSEditorTable.java
deleted file mode 100644
index 246bd8e..0000000
--- a/sources/prefs/editors/VSEditorTable.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs.editors;
-
-import java.util.*;
-
-import java.awt.*;
-//import java.io.*;
-import javax.swing.*;
-import javax.swing.table.*;
-import javax.swing.text.*;
-
-import prefs.*;
-
-/**
- * The class VSEditorTable, each VSAbstractEditor uses an object of this class
- * for displaying all editable items!
- *
- * @author Paul C. Buetow
- */
-public class VSEditorTable extends JTable {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The Constant MIN_ROWS. */
- //private static final int MIN_ROWS = 20;
-
- /** The prefs. */
- //private VSPrefs prefs;
-
- /** The nodes. */
- private ArrayList<VSNode> nodes;
-
- /** The model. */
- private VSEditorTableModel model;
-
- /**
- * The class VSNode.
- */
- private class VSNode {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The key. */
- private String key;
-
- /** The comp. */
- private Component comp;
-
- /**
- * Instantiates a new VSNode object.
- *
- * @param key the key
- */
- public VSNode(String key) {
- this.key = key;
- }
-
- /**
- * Instantiates a new VSNode object.
- *
- * @param key the key
- * @param comp the comp
- */
- public VSNode(String key, Component comp) {
- this.key = key;
- this.comp = comp;
- }
-
- /**
- * Gets the key.
- *
- * @return the key
- */
- public String getKey() {
- return key;
- }
-
- /**
- * Gets the component.
- *
- * @return the component
- */
- public Component getComponent() {
- return comp;
- }
-
- /**
- * Gets the renderer component.
- *
- * @return the renderer component
- */
- public Component getRendererComponent() {
- return comp;
- }
-
- /**
- * Checks if it is a separator.
- *
- * @return true, if is separator
- */
- public boolean isSeparator() {
- return comp == null;
- }
- }
-
- /**
- * The class VSEditorTableModel, it is the model of a VSEditorTable.
- */
- private class VSEditorTableModel extends AbstractTableModel
- implements TableCellRenderer {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a new lang.process.removeeditor table model.
- */
- public VSEditorTableModel() {
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.AbstractTableModel#getColumnName(int)
- */
- public String getColumnName(int col) {
- return "";
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getRowCount()
- */
- public int getRowCount() {
- return nodes.size();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getColumnCount()
- */
- public int getColumnCount() {
- return 2;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getValueAt(int, int)
- */
- public Object getValueAt(int row, int col) {
- VSNode node = nodes.get(row);
-
- if (node.isSeparator()) {
- if (col == 1)
- return "";
-
- return node.getKey();
- }
-
- if (col == 0)
- return node.getKey();
-
- return node.getComponent();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int)
- */
- public boolean isCellEditable(int row, int col) {
- if (col == 0)
- return false;
-
- if (nodes.get(row).isSeparator())
- return false;
-
- return true;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.AbstractTableModel#setValueAt(
- * java.lang.Object, int, int)
- */
- public void setValueAt(Object value, int row, int col) {
- }
-
- /* (non-Javadoc)
- * @see
- * javax.swing.table.TableCellRenderer#getTableCellRendererComponent(
- * javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
- */
- public Component getTableCellRendererComponent(JTable table,
- Object object, boolean isSelected, boolean hasFocus, int
- row, int col) {
-
- VSNode node = nodes.get(row);
-
- if (node.isSeparator()) {
- JTextPane pane = new JTextPane();
- if (col == 0) {
- pane.setText(node.getKey());
- Style style = pane.addStyle("Bold", null);
- StyleConstants.setBold(style, true);
- }
- pane.setBackground(new Color(0xCF, 0xCF, 0XCF));
- return pane;
- }
-
- if (col == 0) {
- JTextField field = new JTextField(" "+node.getKey()+":");
- field.setBorder(null);
- field.setEditable(false);
- field.setBackground(Color.WHITE);
- return field;
- }
-
- return node.getRendererComponent();
- }
- }
-
- /**
- * The class VSTableCellEditor, is the editor of the VSEditorTable
- */
- private class VSTableCellEditor extends AbstractCellEditor
- implements TableCellEditor {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableCellEditor#getTableCellEditorComponent(
- * javax.swing.JTable, java.lang.Object, boolean, int, int)
- */
- public Component getTableCellEditorComponent(JTable table,
- Object object,
- boolean isSelected,
- int row,
- int col) {
- return nodes.get(row).getComponent();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.CellEditor#getCellEditorValue()
- */
- public Object getCellEditorValue() {
- return new String("");
- }
- }
-
- /**
- * Instantiates a new VSEditorTable object.
- *
- * @param prefs the prefs
- */
- public VSEditorTable(VSPrefs prefs) {
- //this.prefs = prefs;
- this.nodes = new ArrayList<VSNode>();
- this.model = new VSEditorTableModel();
- setModel(model);
- setDefaultRenderer(Object.class, model);
- setDefaultEditor(Object.class, new VSTableCellEditor());
- setIntercellSpacing(new Dimension(5, 5));
- setRowHeight(25);
- setBackground(Color.WHITE);
- getTableHeader().setVisible(false);
- TableColumn col = getColumnModel().getColumn(1);
- col.setMinWidth(100);
- col.setMaxWidth(100);
- col.setResizable(false);
-
- col = getColumnModel().getColumn(0);
- col.sizeWidthToFit();
- }
-
- /**
- * Adds the variable.
- *
- * @param key the key
- * @param comp the comp
- */
- public void addVariable(String key, Component comp) {
- nodes.add(new VSNode(key, comp));
- }
-
- /**
- * Adds the separator.
- *
- * @param text the text
- */
- public void addSeparator(String text) {
- nodes.add(new VSNode(text));
- }
-
- /**
- * Fires that the table data has changed.
- */
- public void fireTableDataChanged() {
- model.fireTableDataChanged();
- }
-}
diff --git a/sources/prefs/editors/VSProcessEditor.java b/sources/prefs/editors/VSProcessEditor.java
deleted file mode 100644
index eaacc7b..0000000
--- a/sources/prefs/editors/VSProcessEditor.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs.editors;
-
-import java.awt.event.*;
-import javax.swing.*;
-import java.util.*;
-
-import core.*;
-import protocols.*;
-import events.*;
-import prefs.VSPrefs;
-
-/**
- * The class VSProcessEditor, is for editing a VSInternalProcess object.
- *
- * @author Paul C. Buetow
- */
-public class VSProcessEditor extends VSAbstractBetterEditor {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The process. */
- private VSInternalProcess process;
-
- /** The TAKEOVE r_ button. */
- public static boolean TAKEOVER_BUTTON;
-
- /**
- * Instantiates a new VSProcessEditor object.
- *
- * @param prefs the prefs
- * @param process the process
- */
- public VSProcessEditor(VSPrefs prefs, VSInternalProcess process) {
- super(prefs, process, prefs.getString("lang.en.name") + " - " +
- prefs.getString("lang.en.prefs.process"));;
- this.process = process;
- disposeFrameWithParentIfExists();
- makeProtocolVariablesEditable();
- }
-
- /* (non-Javadoc)
- * @see prefs.editors.VSAbstractBetterEditor#addToButtonPanelFront(
- * javax.swing.JPanel)
- */
- protected void addToButtonPanelFront(JPanel buttonPanel) {
- JButton takeoverButton = new JButton(
- prefs.getString("lang.en.takeover"));
- takeoverButton.setMnemonic(prefs.getInteger("keyevent.takeover"));
- takeoverButton.addActionListener(this);
- buttonPanel.add(takeoverButton);
- }
-
- /**
- * Make protocol variables editable.
- */
- protected void makeProtocolVariablesEditable() {
- ArrayList<String> editableProtocolsClassnames =
- VSRegisteredEvents.getEditableProtocolsClassnames();
-
- //String protocolString = " " + prefs.getString("lang.en.protocol");
- String clientString = " " + prefs.getString("lang.en.client");
- String serverString = " " + prefs.getString("lang.en.server");
-
- for (String protocolClassname : editableProtocolsClassnames) {
- String protocolShortname =
- VSRegisteredEvents.getShortnameByClassname(
- protocolClassname);
- VSAbstractProtocol protocol =
- process.getProtocolObject(protocolClassname);
- protocol.onClientInit();
- protocol.onServerInit();
-
- ArrayList<String> clientVariables =
- VSRegisteredEvents.getProtocolClientVariables(
- protocolClassname);
- if (clientVariables != null)
- addToEditor(protocolShortname + clientString,
- protocolShortname, protocol, clientVariables);
-
- ArrayList<String> serverVariables =
- VSRegisteredEvents.getProtocolServerVariables(
- protocolClassname);
- if (serverVariables != null)
- addToEditor(protocolShortname + serverString,
- protocolShortname, protocol, serverVariables);
- }
- }
-
- /* (non-Javadoc)
- * @see prefs.editors.VSAbstractBetterEditor#actionPerformed(
- * java.awt.event.ActionEvent)
- */
- public void actionPerformed(ActionEvent e) {
- String actionCommand = e.getActionCommand();
-
- if (actionCommand.equals(prefs.getString("lang.en.ok"))) {
- savePrefs();
- process.updateFromPrefs();
-
- } else if (actionCommand.equals(prefs.getString("lang.en.takeover"))) {
- savePrefs();
- process.updateFromPrefs();
-
- } else {
- super.actionPerformed(e);
- }
- }
-}
diff --git a/sources/prefs/editors/VSSimulatorEditor.java b/sources/prefs/editors/VSSimulatorEditor.java
deleted file mode 100644
index edd9cd5..0000000
--- a/sources/prefs/editors/VSSimulatorEditor.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package prefs.editors;
-
-import java.awt.event.*;
-import javax.swing.*;
-
-import simulator.*;
-import prefs.*;
-
-/**
- * The class VSSimulatorEditor, is for editing a VSSimulator object.
- *
- * @author Paul C. Buetow
- */
-public class VSSimulatorEditor extends VSAbstractBetterEditor {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The constant OPENED_NEW_WINDOW */
- public static final boolean OPENED_NEW_WINDOW = true;
-
- /** The constant OPENED_NEW_TAB */
- public static final boolean OPENED_NEW_TAB = false;
-
- /** The simulator frame. */
- private VSSimulatorFrame simulatorFrame;
-
- /** The simulator. */
- private VSSimulator simulator;
-
- /** The TAKEOVE r_ button. */
- public static boolean TAKEOVER_BUTTON;
-
- /** The dont start new simulator. */
- private boolean dontStartNewSimulator;
-
- /** Open a new simulator window. */
- private boolean openedNewWindow;
-
- /**
- * Instantiates a new VSSimulatorEditor object.
- *
- * @param prefs the prefs
- * @param simulatorFrame the simulator frame
- * @param simulator the simulator
- */
- public VSSimulatorEditor(VSPrefs prefs, VSSimulatorFrame simulatorFrame,
- VSSimulator simulator) {
- super(prefs, prefs, prefs.getString("lang.en.name")
- + " - " + prefs.getString("lang.en.prefs"));
- this.dontStartNewSimulator = true;//simulator != null;
- this.simulatorFrame = simulatorFrame;
- this.simulator = simulator;
- }
-
- /**
- * Instantiates a new VSSimulatorEditor object.
- *
- * @param prefs the prefs
- * @param simulatorFrame the simulator frame
- */
- public VSSimulatorEditor(VSPrefs prefs, VSSimulatorFrame simulatorFrame,
- boolean openedNewWindow) {
- super(prefs, prefs, prefs.getString("lang.en.name")
- + " - " + prefs.getString("lang.en.prefs"));
- this.simulatorFrame = simulatorFrame;
- this.openedNewWindow = openedNewWindow;
- }
-
- /* (non-Javadoc)
- * @see prefs.editors.VSAbstractBetterEditor#addToButtonPanelFront(
- * javax.swing.JPanel)
- */
- protected void addToButtonPanelFront(JPanel buttonPanel) {
- if (TAKEOVER_BUTTON) {
- TAKEOVER_BUTTON = false;
- JButton takeoverButton = new JButton(
- prefs.getString("lang.en.takeover"));
- takeoverButton.setMnemonic(prefs.getInteger("keyevent.takeover"));
- takeoverButton.addActionListener(this);
- buttonPanel.add(takeoverButton);
- }
- }
-
- /* (non-Javadoc)
- * @see prefs.editors.VSAbstractBetterEditor#actionPerformed(
- * java.awt.event.ActionEvent)
- */
- public void actionPerformed(ActionEvent e) {
- String actionCommand = e.getActionCommand();
-
- if (actionCommand.equals(prefs.getString("lang.en.takeover"))) {
- savePrefs();
-
- if (simulator != null) {
- if (expertModeChanged())
- simulator.fireExpertModeChanged();
- simulator.updateFromPrefs();
- }
-
- } else if (actionCommand.equals(prefs.getString("lang.en.cancel"))) {
- if (!dontStartNewSimulator && openedNewWindow)
- simulatorFrame.dispose();
-
- } else if (actionCommand.equals(prefs.getString("lang.en.ok"))) {
- savePrefs();
- if (expertModeChanged()) {
- if (simulator != null)
- simulator.fireExpertModeChanged();
- }
- if (!dontStartNewSimulator)
- simulatorFrame.addSimulator(new VSSimulator(prefsToEdit,
- simulatorFrame));
- else if (simulator != null)
- simulator.updateFromPrefs();
-
- } else {
- super.actionPerformed(e);
- }
- }
-}
diff --git a/sources/protocols/VSAbstractProtocol.java b/sources/protocols/VSAbstractProtocol.java
deleted file mode 100644
index 43c8958..0000000
--- a/sources/protocols/VSAbstractProtocol.java
+++ /dev/null
@@ -1,475 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 - 2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols;
-
-import java.io.*;
-import java.util.ArrayList;
-
-import core.*;
-import events.*;
-import events.internal.*;
-import serialize.*;
-import simulator.VSSimulatorVisualization;
-
-/**
- * The class VSAbstractProtocol, this class defined the basic framework of a
- * protocol.
- *
- * @author Paul C. Buetow
- */
-abstract public class VSAbstractProtocol extends VSAbstractEvent {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The protocol has an onServerStart method */
- protected static final boolean HAS_ON_SERVER_START = true;
-
- /** The protocol has an onClientStart method */
- protected static final boolean HAS_ON_CLIENT_START = false;
-
- /** True, if onServerStart is used, false if onClientStart is used */
- private boolean hasOnServerStart;
-
- /** The protocol object is a server. */
- private boolean isServer;
-
- /** The protocol object is a client. */
- private boolean isClient;
-
- /** The protocol object server is initialized. */
- private boolean isServerInitialized;
-
- /** The protocol object client is initialized. */
- private boolean isClientInitialized;
-
- /** The current protocol object's context is a server. */
- private boolean currentContextIsServer;
-
- /** The protocol's server schedules */
- private ArrayList<VSTask> serverSchedules = new ArrayList<VSTask>();
-
- /** The protocol's client schedules */
- private ArrayList<VSTask> clientSchedules = new ArrayList<VSTask>();
-
- /**
- * A simple constructor.
- *
- * @param hasOnServerStart true, if the protocol uses an onServerStart
- * method. false, if the protocol uses an onClientStart method instead.
- */
- public VSAbstractProtocol(boolean hasOnServerStart) {
- this.hasOnServerStart = hasOnServerStart;
- }
-
- /**
- * Sends a message.
- *
- * @param message the message to send
- */
- public void sendMessage(VSMessage message) {
- if (process == null)
- return;
-
- process.increaseLamportTime();
- process.increaseVectorTime();
-
- VSMessageStub stub = new VSMessageStub(message);
- VSInternalProcess internalProcess = (VSInternalProcess) process;
-
- if (currentContextIsServer)
- stub.init(internalProcess, getClassname(),
- VSMessage.IS_SERVER_MESSAGE);
- else
- stub.init(internalProcess, getClassname(),
- VSMessage.IS_CLIENT_MESSAGE);
-
- internalProcess.sendMessage(message);
- }
-
- /**
- * Checks if it's the incorrect protocol
- *
- * @param message the message to check against
- *
- * @return true, if is incorrect protocol
- */
- private final boolean isIncorrectProtocol(VSMessage message) {
- return !message.getProtocolClassname().equals(getClassname());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onStart()
- */
- public final void onStart() {
- if (hasOnServerStart) {
- if (isServer) {
- currentContextIsServer(true);
- if (!isServerInitialized)
- onInit();
- onServerStart();
- }
- } else {
- if (isClient) {
- currentContextIsServer(false);
- if (!isClientInitialized)
- onInit();
- onClientStart();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#onInit()
- */
- public final void onInit() {
- if (isClient) {
- currentContextIsServer(false);
- onClientInit();
- isClientInitialized = true;
- }
-
- if (isServer) {
- currentContextIsServer(true);
- onServerInit();
- isServerInitialized = true;
- }
- }
-
- /**
- * Runs a client schedule
- */
- public final void onClientScheduleStart() {
- if (isClient) {
- currentContextIsServer(false);
- onClientSchedule();
- }
- }
-
- /**
- * Runs a server schedule
- */
- public final void onServerScheduleStart() {
- if (isServer) {
- currentContextIsServer(true);
- onServerSchedule();
- }
- }
-
- /**
- * On message recv.
- *
- * @param message the message
- */
- public final void onMessageRecvStart(VSMessage message) {
- if (isIncorrectProtocol(message))
- return;
-
- if (isServer) {
- currentContextIsServer(true);
- if (!isServerInitialized)
- onInit();
- onServerRecv(message);
- }
-
- if (isClient) {
- currentContextIsServer(false);
- if (!isClientInitialized)
- onInit();
- onClientRecv(message);
- }
- }
-
- /**
- * Check's if its a relevant message.
- *
- * @param message the message to check
- *
- * @return true, if it's a relevant meessage. false if the protocol
- * is wrong or if the server recv a server message/the client recv a
- * client message. Clients should only recv server messages and servers
- * should only recv client messages.
- */
- public final boolean isRelevantMessage(VSMessage message) {
- if (isIncorrectProtocol(message))
- return false;
-
- if (message.isServerMessage()) {
- if (!isClient)
- return false;
- } else {
- if (!isServer)
- return false;
- }
-
- return true;
- }
-
- /**
- * Sets if the current context is server.
- *
- * @param currentContextIsServer the context.
- */
- public final void currentContextIsServer(boolean currentContextIsServer) {
- this.currentContextIsServer = currentContextIsServer;
- }
-
- /**
- * Checks how the protocol will start
- *
- * @return true, if this protocol uses onServerStart instead of
- * onClientStart
- */
- public final boolean hasOnServerStart() {
- return hasOnServerStart;
- }
-
- /**
- * Sets if is server.
- *
- * @param isServer the is server
- */
- public final void isServer(boolean isServer) {
- this.isServer = isServer;
- }
-
- /**
- * Checks if is server.
- *
- * @return true, if the protocol has activated the server part
- */
- public final boolean isServer() {
- return isServer;
- }
-
- /**
- * Sets if is client.
- *
- * @param isClient the is client
- */
- public final void isClient(boolean isClient) {
- this.isClient = isClient;
- }
-
- /**
- * Checks if is client.
- *
- * @return true, if the protocol has activated the client part
- */
- public final boolean isClient() {
- return isClient;
- }
-
- /**
- * Resets the protocol.
- */
- public void reset() {
- currentContextIsServer(true);
- isServer = false;
- onServerReset();
- serverSchedules.clear();
-
- currentContextIsServer(false);
- isClient = false;
- onClientReset();
- clientSchedules.clear();
- }
-
- /**
- * Reschedules the protocol for a new time and runs onClientSchedule or
- * onServerSchedule
- *
- * @param time The process' local time to run the schedule at.
- */
- public final void scheduleAt(long time) {
- VSInternalProcess internalProcess = (VSInternalProcess) process;
- VSAbstractEvent scheduleEvent =
- new VSProtocolScheduleEvent(this, currentContextIsServer);
- VSTask scheduleTask =
- new VSTask(time, internalProcess, scheduleEvent, VSTask.LOCAL);
-
- if (currentContextIsServer)
- serverSchedules.add(scheduleTask);
- else
- clientSchedules.add(scheduleTask);
-
- VSSimulatorVisualization canvas = internalProcess.getSimulatorCanvas();
- canvas.getTaskManager().addTask(scheduleTask);
- }
-
- /**
- * Removes all schedules of the protocol (server or client)
- */
- public final void removeSchedules() {
- VSInternalProcess internalProcess = (VSInternalProcess) process;
-
- if (currentContextIsServer) {
- internalProcess.getSimulatorCanvas().
- getTaskManager().removeAllTasks(serverSchedules);
- serverSchedules.clear();
-
- } else {
- internalProcess.getSimulatorCanvas().
- getTaskManager().removeAllTasks(clientSchedules);
- clientSchedules.clear();
- }
- }
-
- /**
- * On client init.
- */
- abstract public void onClientInit();
-
- /**
- * On client start.
- */
- public void onClientStart() { };
-
- /**
- * On client reset.
- */
- abstract public void onClientReset();
-
- /**
- * On client schedule.
- */
- abstract public void onClientSchedule();
-
- /**
- * On client recv.
- *
- * @param message the message
- */
- abstract public void onClientRecv(VSMessage message);
-
- /**
- * On server init.
- */
- abstract public void onServerInit();
-
- /**
- * On server start.
- */
- public void onServerStart() { };
-
- /**
- * On server reset.
- */
- abstract public void onServerReset();
-
- /**
- * On server recv.
- *
- * @param message the message
- */
- abstract public void onServerRecv(VSMessage message);
-
- /**
- * On server schedule.
- */
- abstract public void onServerSchedule();
-
- /**
- * Gets the num processes.
- *
- * @return the num processes
- */
- public final int getNumProcesses() {
- if (process == null)
- return 0;
-
- VSInternalProcess internalProcess = (VSInternalProcess) process;
- return internalProcess.getSimulatorCanvas().getNumProcesses();
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractEvent#createShortname()()
- */
- protected String createShortname(String savedShortname) {
- return savedShortname;
- }
-
- /* (non-Javadoc)
- * @see prefs.VSPrefs#toString()
- */
- public String toString() {
- if (process == null)
- return "";
-
- StringBuffer buffer = new StringBuffer();
-
- buffer.append(prefs.getString("lang.en.protocol"));
- buffer.append(": ");
- buffer.append(getShortname());
- buffer.append(" ");
-
- if (currentContextIsServer)
- buffer.append(prefs.getString("lang.en.server"));
- else
- buffer.append(prefs.getString("lang.en.client"));
-
- return buffer.toString();
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- super.serialize(serialize, objectOutputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- objectOutputStream.writeObject(new Boolean(hasOnServerStart));
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- super.deserialize(serialize, objectInputStream);
-
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSAbstractProtocol");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- this.hasOnServerStart = ((Boolean)
- objectInputStream.readObject()).booleanValue();
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-}
diff --git a/sources/protocols/implementations/README b/sources/protocols/implementations/README
deleted file mode 100644
index fd8effa..0000000
--- a/sources/protocols/implementations/README
+++ /dev/null
@@ -1,10 +0,0 @@
-How to add a new protocol:
-
-1. Copy the file VSDummyProtocol.java into VSYourOwnNiceProtocol.java
-
-2. Edit VSYourOwnNiceProtocol.java and replace the classname!
-
-3. Edit the initialize method of events.RegisteredEvents.java and add the classname
-of your protocol. E.g.: "protocols.implementations.VSYourOwnNiceProtocol"
-
-
diff --git a/sources/protocols/implementations/VSBasicMulticastProtocol.java b/sources/protocols/implementations/VSBasicMulticastProtocol.java
deleted file mode 100644
index 76b13b5..0000000
--- a/sources/protocols/implementations/VSBasicMulticastProtocol.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSBasicMulticastProtocol, an implementation of the basic multicast
- * protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSBasicMulticastProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a new VSBasicMulticast object.
- */
- public VSBasicMulticastProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- VSMessage message = new VSMessage();
- message.setBoolean("isMulticast", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (recvMessage.getBoolean("isMulticast"))
- log("Multicast erhalten");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSBerkelyTimeProtocol.java b/sources/protocols/implementations/VSBerkelyTimeProtocol.java
deleted file mode 100644
index 1b69b72..0000000
--- a/sources/protocols/implementations/VSBerkelyTimeProtocol.java
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Vector;
-
-/**
- * The class VSBerkelyTimeProtocol, an implementation of the berkely time
- * protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSBerkelyTimeProtocol extends VSAbstractProtocol {
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a new berkely time protocol.
- */
- public VSBerkelyTimeProtocol() {
- super(VSAbstractProtocol.HAS_ON_SERVER_START);
- setClassname(getClass().toString());
- }
-
- /** Integer: Process ID, Long: Local time of the process */
- private HashMap<Integer,Long> processTimes = new HashMap<Integer,Long>();
-
- /** Integer: Process ID, Long: Time of receiving the response from the
- * process
- */
- private HashMap<Integer,Long> recvTimes = new HashMap<Integer,Long>();
-
- /** Integer: Process ID, Long: Calculated process times (using the RTT) */
- private HashMap<Integer,Long> realTimesRTT = new HashMap<Integer,Long>();
-
- /** Contains all process IDs of processes which want to justify their
- * time
- */
- private ArrayList<Integer> peers = new ArrayList<Integer>();
-
- /** Time the request/response has started */
- private long requestTime;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- Vector<Integer> vec = new Vector<Integer>();
- vec.add(1);
- vec.add(3);
- initVector("pids", vec, "PIDs beteiliger Prozesse");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- //System.out.println("FOOBAR");
- processTimes.clear();
- recvTimes.clear();
- realTimesRTT.clear();
- peers.clear();
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerStart()
- */
- public void onServerStart() {
- //System.out.println("FOO");
- peers.addAll(getVector("pids"));
- requestTime = process.getTime();
- VSMessage message = new VSMessage();
- message.setBoolean("isRequest", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- /* Ignore all protocol messages which are not a response message,
- e.g. itself */
- if (!recvMessage.getBoolean("isResponse"))
- return;
-
- Integer processID = recvMessage.getIntegerObj("processID");
-
- if (peers.contains(processID))
- peers.remove(processID);
- else
- return; /* Process has been handled already or is not listed */
-
- Long time = new Long(recvMessage.getLong("time"));
-
- processTimes.put(processID, time);
- recvTimes.put(processID, new Long(process.getTime()));
-
- /* All peers have told their times */
- if (peers.size() == 0) {
- long avgTime = calculateAverageTime();
- /* Set the local's process time to the new avg reference time */
- process.setTime(avgTime);
- /* Tell all other processes what to do in order to justify their
- times */
- sendJustifyRequests(avgTime);
- /* Start "clean" next time */
- onServerReset();
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /**
- * Calculate the new average time.
- *
- * @return the long
- */
- private long calculateAverageTime() {
- long sum = 0;
- for (Integer processID : processTimes.keySet()) {
- Long localTime = processTimes.get(processID);
- Long recvTime = recvTimes.get(processID);
- long rtt = recvTime.longValue() - requestTime;
- long realProcessTime = localTime + (long) (rtt / 2);
- realTimesRTT.put(processID, new Long(realProcessTime));
- sum += realProcessTime;
- }
- /* Include the time of the local process */
- sum += process.getTime();
- return (long) sum / (getVector("pids").size() + 1);
- }
-
- /**
- * Sends to all clients a value to justify their local clocks.
- *
- * @param avgTime the avg time
- */
- private void sendJustifyRequests(long avgTime) {
- for (Integer processID : processTimes.keySet()) {
- long realProcessTime = realTimesRTT.get(processID).longValue();
- long diff = avgTime - realProcessTime;
- VSMessage message = new VSMessage();
- message.setBoolean("isJustify", true);
- message.setLong("timeDiff", diff);
- message.setInteger("receiverProcessID", processID);
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (recvMessage.getBoolean("isRequest")) {
- VSMessage message = new VSMessage();
- message.setInteger("processID", process.getProcessID());
- message.setLong("time", process.getTime());
- message.setBoolean("isResponse", true);
- sendMessage(message);
-
- } else if (recvMessage.getBoolean("isJustify")) {
- /* Check if it's "my" justify message */
- if (recvMessage.getInteger("receiverProcessID") !=
- process.getProcessID())
- return;
-
- long timeDiff = recvMessage.getLong("timeDiff");
- //long recvTime = process.getTime();
- long newTime = process.getTime() + timeDiff;
- log("Neue Zeit: " + newTime);
-
- process.setTime(newTime);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSBroadcastProtocol.java b/sources/protocols/implementations/VSBroadcastProtocol.java
deleted file mode 100644
index 0ae8fae..0000000
--- a/sources/protocols/implementations/VSBroadcastProtocol.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import java.util.ArrayList;
-
-import core.VSMessage;
-import protocols.VSAbstractProtocol;
-
-/**
- * The class VSBroadcastProtocol, an implementation of the broadcast
- * sturm protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSBroadcastProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The sent messages. */
- private ArrayList<Integer> sentMessages;
-
- /** The broadcast count. */
- private static int broadcastCount;
-
- /**
- * Instantiates a new broadcast sturm protocol.
- */
- public VSBroadcastProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- sentMessages = new ArrayList<Integer>();
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- VSMessage message = new VSMessage();
- message.setInteger("Broadcast", broadcastCount++);
- sentMessages.add(message.getIntegerObj("Broadcast"));
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- onServerRecv(recvMessage);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- sentMessages.clear();
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (!sentMessages.contains(recvMessage.getIntegerObj("Broadcast"))) {
- VSMessage message = new VSMessage();
- message.setInteger("Broadcast",
- recvMessage.getInteger("Broadcast"));
- sentMessages.add(message.getIntegerObj("Broadcast"));
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSDummyProtocol.java b/sources/protocols/implementations/VSDummyProtocol.java
deleted file mode 100644
index b06e256..0000000
--- a/sources/protocols/implementations/VSDummyProtocol.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSDummyProtocol, can be used as a template in order to create
- * own protocols.
- *
- * @author Paul C. Buetow
- */
-public class VSDummyProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a new dummy protocol object.
- */
- public VSDummyProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- log("onClientReset()");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- log("onClientStart()");
-
- VSMessage message = new VSMessage();
- message.setString("Greeting", "Hello World!");
- message.setInteger("A number", 1);
- message.setBoolean("A boolean", true);
- message.setFloat("A float", 1.2f);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- log("onClientRecv("+recvMessage+")");
-
- String s = recvMessage.getString("Greeting");
- int n = recvMessage.getInteger("A number");
- boolean b = recvMessage.getBoolean("A boolean");
- float f = recvMessage.getFloat("A float");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- log("onClientReset()");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- log("onServerRecv("+recvMessage+")");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString() + "; Dummy Test";
- }
-}
diff --git a/sources/protocols/implementations/VSExternalTimeSyncProtocol.java b/sources/protocols/implementations/VSExternalTimeSyncProtocol.java
deleted file mode 100644
index 3bb5eb9..0000000
--- a/sources/protocols/implementations/VSExternalTimeSyncProtocol.java
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import core.VSMessage;
-import protocols.VSAbstractProtocol;
-
-/**
- * The class VSExternalTimeSyncProtocol, an implementation of the external
- * time synchronisation protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSExternalTimeSyncProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The request time. */
- private long requestTime;
-
- /** The server is waiting for response, if true. */
- private boolean waitingForResponse;
-
- /**
- * Instantiates a new external time sync protocol object.
- */
- public VSExternalTimeSyncProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- requestTime = process.getTime();
- waitingForResponse = true;
-
- /* Multicast message to all processes */
- VSMessage message = new VSMessage();
- message.setBoolean("isClientRequest", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (!recvMessage.getBoolean("isServerResponse"))
- return;
-
- if (waitingForResponse)
- waitingForResponse = false;
- else
- return;
-
- long recvTime = process.getTime();
- long roundTripTime = recvTime - requestTime;
- long serverTime = recvMessage.getLong("time");
- long newTime = serverTime + (long) (roundTripTime / 2);
-
- log("Server Zeit: " + serverTime + "; RTT: " + roundTripTime +
- "; Alte Zeit: " + recvTime + "; Neue Zeit: " + newTime +
- "; Offset: " + (newTime - recvTime));
- process.setTime(newTime);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (!recvMessage.getBoolean("isClientRequest"))
- return;
-
- /* Multicast message to all processes */
- VSMessage message = new VSMessage();
- message.setLong("time", process.getTime());
- message.setBoolean("isServerResponse", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSInternalTimeSyncProtocol.java b/sources/protocols/implementations/VSInternalTimeSyncProtocol.java
deleted file mode 100644
index c52b0ed..0000000
--- a/sources/protocols/implementations/VSInternalTimeSyncProtocol.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import core.VSMessage;
-import protocols.VSAbstractProtocol;
-
-/**
- * The class VSInternalTimeSyncProtocol, an implementation of the internal
- * time synchronisation protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSInternalTimeSyncProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The waiting for response. */
- private boolean waitingForResponse;
-
- /**
- * Instantiates a new internal time sync protocol.
- */
- public VSInternalTimeSyncProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- initLong("t_min", 2000, "Max. Übetragungszeit", "ms");
- initLong("t_max", 500, "Min. Übertragungszeit", "ms");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- waitingForResponse = true;
-
- /* Multicast message to all processes */
- VSMessage message = new VSMessage();
- message.setBoolean("isClientRequest", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- /* Ignore all protocol messages which are not a response message,
- e.g. itself */
- if (!recvMessage.getBoolean("isServerResponse"))
- return;
-
- if (waitingForResponse)
- waitingForResponse = false;
- else
- return;
-
- long tMax = getLong("t_max");
- long tMin = getLong("t_min");
- long serverTime = recvMessage.getLong("time");
- long newTime = serverTime + (long) ((tMax + tMin) / 2 );
-
- log("Server Zeit: " + serverTime + "; (t_min,t_max): (" + tMin +
- "," + tMax + "); Alte Zeit: " + process.getTime() +
- "; Neue Zeit: " + newTime + "; Offset: " +
- (process.getTime() - newTime));
-
- process.setTime(newTime);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- /* Ignore all protocol messages which are not a request message,
- e.g. itself */
- if (!recvMessage.getBoolean("isClientRequest"))
- return;
-
- /* Multicast message to all processes */
- VSMessage message = new VSMessage();
- message.setLong("time", process.getTime());
- message.setBoolean("isServerResponse", true);
- sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSOnePhaseCommitProtocol.java b/sources/protocols/implementations/VSOnePhaseCommitProtocol.java
deleted file mode 100644
index feb4dd5..0000000
--- a/sources/protocols/implementations/VSOnePhaseCommitProtocol.java
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import java.util.ArrayList;
-import java.util.Vector;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSOnePhaseCommitProtocol, an implementation of the one phase
- * commit protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSOnePhaseCommitProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /* Server variables */
- private boolean ackSent;
-
- /**
- * Instantiates a one phase commit protocol.
- */
- public VSOnePhaseCommitProtocol() {
- super(VSAbstractProtocol.HAS_ON_SERVER_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- /* Can be changed via GUI variables editor of each process */
- Vector<Integer> vec = new Vector<Integer>();
- vec.add(1);
- vec.add(3);
-
- initVector("pids", vec, "PIDs beteiligter Prozesse");
- initLong("timeout", 2500, "Zeit bis erneute Anfrage", "ms");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- if (pids != null) {
- pids.clear();
- pids.addAll(getVector("pids"));
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerStart()
- */
- public void onServerStart() {
- if (pids == null) {
- pids = new ArrayList<Integer>();
- pids.addAll(getVector("pids"));
- }
-
- if (pids.size() != 0) {
- long timeout = getLong("timeout") + process.getTime();
- /* Will run onServerSchedule() at the specified local time */
- scheduleAt(timeout);
-
- VSMessage message = new VSMessage();
- message.setBoolean("wantAck", true);
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (pids.size() == 0)
- return;
-
- if (recvMessage.getBoolean("isAck")) {
- Integer pid = recvMessage.getIntegerObj("pid");
- if (pids.contains(pid))
- pids.remove(pid);
- else
- return;
-
- log("ACK von Prozess " + pid + " erhalten!");
-
- if (pids.size() == 0) {
- log("ACKs von allen beteiligten Prozessen erhalten! " +
- "Festgeschrieben!");
-
- /* Remove the active schedule which has been created in the
- onServerStart method */
- removeSchedules();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- onServerStart();
- }
-
-
- /* Client variables, coordinator */
- private ArrayList<Integer> pids;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- ackSent = false;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (ackSent)
- return;
-
- VSMessage message = new VSMessage();
- message.setBoolean("isAck", true);
- message.setInteger("pid", process.getProcessID());
- sendMessage(message);
- ackSent = true;
- log("Festgeschrieben");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString();
- }
-}
diff --git a/sources/protocols/implementations/VSPingPongProtocol.java b/sources/protocols/implementations/VSPingPongProtocol.java
deleted file mode 100644
index c9d763b..0000000
--- a/sources/protocols/implementations/VSPingPongProtocol.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import core.VSMessage;
-import protocols.VSAbstractProtocol;
-
-/**
- * The class VSPingPongProtocol, an implementation of the ping pong protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSPingPongProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The client counter. */
- private int clientCounter;
-
- /** The server counter. */
- private int serverCounter;
-
- /**
- * Instantiates a new ping pong protocol.
- */
- public VSPingPongProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- clientCounter = 0;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- VSMessage message = new VSMessage();
- message.setBoolean("fromClient", true);
- message.setInteger("counter", ++clientCounter);
- super.sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (!recvMessage.getBoolean("fromServer"))
- return;
-
- super.log("message: " + recvMessage.getInteger("counter"));
-
- VSMessage message = new VSMessage();
- message.setBoolean("fromClient", true);
- message.setInteger("counter", ++clientCounter);
- super.sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- serverCounter = 0;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (!recvMessage.getBoolean("fromClient"))
- return;
-
- super.log("message: " + recvMessage.getInteger("counter"));
-
- VSMessage message = new VSMessage();
- message.setBoolean("fromServer", true);
- message.setInteger("counter", ++serverCounter);
- super.sendMessage(message);
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#toString()
- */
- public String toString() {
- return super.toString() + "; Neue Nachricht da hinter";
- }
-}
diff --git a/sources/protocols/implementations/VSReliableMulticastProtocol.java b/sources/protocols/implementations/VSReliableMulticastProtocol.java
deleted file mode 100644
index 57b943c..0000000
--- a/sources/protocols/implementations/VSReliableMulticastProtocol.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import java.util.ArrayList;
-import java.util.Vector;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSReliableMulticastProtocol, an implementation of the reliable
- * multicast protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSReliableMulticastProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 2L;
-
- /**
- * Instantiates a two phase commit protocol object.
- */
- public VSReliableMulticastProtocol() {
- super(VSAbstractProtocol.HAS_ON_CLIENT_START);
- setClassname(getClass().toString());
- }
-
- /** PIDs of all processes which still have to send an ACK */
- private ArrayList<Integer> pids;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- Vector<Integer> vec = new Vector<Integer>();
- vec.add(1);
- vec.add(3);
-
- super.initVector("pids", vec, "PIDs beteiligter Prozesse");
- super.initLong("timeout", 2500, "Zeit bis erneute Anfrage", "ms");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- if (pids != null) {
- pids.clear();
- pids.addAll(getVector("pids"));
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientStart()
- */
- public void onClientStart() {
- if (pids == null) {
- pids = new ArrayList<Integer>();
- pids.addAll(getVector("pids"));
- }
-
- if (pids.size() != 0) {
- long timeout = getLong("timeout") + process.getTime();
- /* Will run onClientSchedule() at the specified local time */
- scheduleAt(timeout);
-
- VSMessage message = new VSMessage();
- message.setBoolean("isMulticast", true);
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (pids.size() != 0 && recvMessage.getBoolean("isAck")) {
- Integer pid = recvMessage.getIntegerObj("pid");
-
- if (pids.contains(pid))
- pids.remove(pid);
- else
- return;
-
- log("ACK von Prozess " + pid + " erhalten!");
-
- if (pids.size() == 0) {
- log("ACKs von allen beteiligten Prozessen " +
- "erhalten!");
-
- /* Remove the active schedule which has been created in the
- onClientStart method */
- removeSchedules();
- }
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- onClientStart();
- }
-
- /** True if ACK has been sent already */
- private boolean ackSent;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- ackSent = false;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (recvMessage.getBoolean("isMulticast")) {
- VSMessage message = new VSMessage();
- message.setBoolean("isAck", true);
- message.setInteger("pid", process.getProcessID());
- sendMessage(message);
-
- if (ackSent) {
- log("ACK erneut versendet");
-
- } else {
- log("ACK versendet");
- ackSent = true;
- }
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- }
-}
diff --git a/sources/protocols/implementations/VSTwoPhaseCommitProtocol.java b/sources/protocols/implementations/VSTwoPhaseCommitProtocol.java
deleted file mode 100644
index 2a0a4f2..0000000
--- a/sources/protocols/implementations/VSTwoPhaseCommitProtocol.java
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package protocols.implementations;
-
-import java.util.ArrayList;
-import java.util.Vector;
-
-import protocols.VSAbstractProtocol;
-import core.VSMessage;
-
-/**
- * The class VSTwoPhaseCommitProtocol, an implementation of the two phase
- * commit protocol.
- *
- * @author Paul C. Buetow
- */
-public class VSTwoPhaseCommitProtocol extends VSAbstractProtocol {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a two phase commit protocol object.
- */
- public VSTwoPhaseCommitProtocol() {
- super(VSAbstractProtocol.HAS_ON_SERVER_START);
- setClassname(getClass().toString());
- }
-
- /** PIDs of all processes which still have to vote */
- private ArrayList<Integer> votePids;
-
- /** PIDs of all processes which have to acknowledge that they recv the
- * global vote result
- */
- private ArrayList<Integer> ackPids;
-
- /** The gloal vote result */
- private boolean voteResult;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onServerInit()
- */
- public void onServerInit() {
- Vector<Integer> vec = new Vector<Integer>();
- vec.add(2);
- vec.add(3);
-
- initVector("pids", vec, "PIDs beteiligter Prozesse");
- initLong("timeout", 2500, "Zeit bis erneute Anfrage", "ms");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerReset()
- */
- public void onServerReset() {
- if (votePids != null) {
- voteResult = true;
- votePids.clear();
- votePids.addAll(getVector("pids"));
- ackPids.clear();
- ackPids.addAll(getVector("pids"));
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerStart()
- */
- public void onServerStart() {
- if (votePids == null) {
- voteResult = true;
- votePids = new ArrayList<Integer>();
- votePids.addAll(getVector("pids"));
- ackPids = new ArrayList<Integer>();
- ackPids.addAll(getVector("pids"));
- }
-
- if (votePids.size() != 0) {
- long timeout = getLong("timeout") + process.getTime();
- /* Will run onServerSchedule() at the specified local time */
- scheduleAt(timeout);
-
- VSMessage message = new VSMessage();
- message.setBoolean("wantVote", true);
- sendMessage(message);
-
- } else if (ackPids.size() != 0) {
- long timeout = getLong("timeout") + process.getTime();
- /* Will run onServerSchedule() at the specified local time */
- scheduleAt(timeout);
-
- VSMessage message = new VSMessage();
- message.setBoolean("isVoteResult", true);
- message.setBoolean("voteResult", voteResult);
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerRecv(core.VSMessage)
- */
- public void onServerRecv(VSMessage recvMessage) {
- if (votePids.size() != 0 && recvMessage.getBoolean("isVote")) {
- Integer pid = recvMessage.getIntegerObj("pid");
- if (votePids.contains(pid))
- votePids.remove(pid);
- else
- return;
-
- boolean vote = recvMessage.getBoolean("vote");
- log("Abstimmung von Prozess " + pid +
- " erhalten! Ergebnis: " + vote);
-
- if (!vote)
- voteResult = false;
-
- if (votePids.size() == 0) {
- log("Abstimmungen von allen beteiligten Prozessen " +
- "erhalten! Globales Ergebnis: " + voteResult);
-
- /* Remove the active schedule which has been created in the
- onServerStart method */
- removeSchedules();
- /* Create a new schedule and send the vote result */
- onServerStart();
- }
-
- } else if (ackPids.size() != 0 && recvMessage.getBoolean("isAck")) {
- Integer pid = recvMessage.getIntegerObj("pid");
- if (ackPids.contains(pid))
- ackPids.remove(pid);
- else
- return;
-
- if (ackPids.size() == 0) {
- /* Remove the active schedule which has been created in the
- onServerStart method */
- removeSchedules();
- log("Alle Teilnehmer haben die Abstimmung erhalten");
- }
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onServerSchedule()
- */
- public void onServerSchedule() {
- onServerStart();
- }
-
- /* Server variables */
- private boolean voteSent;
- private boolean myVote;
-
- /* (non-Javadoc)
- * @see events.VSAbstractProtocol#onClientInit()
- */
- public void onClientInit() {
- initInteger("ackProb", 50, "Festschreibw'keit", 0, 100, "%");
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientReset()
- */
- public void onClientReset() {
- voteSent = false;
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientRecv(core.VSMessage)
- */
- public void onClientRecv(VSMessage recvMessage) {
- if (recvMessage.getBoolean("wantVote")) {
- if (!voteSent) {
- voteSent = true;
- myVote = process.getRandomPercentage() <= getInteger("ackProb");
- }
-
- VSMessage message = new VSMessage();
- message.setBoolean("isVote", true);
- message.setBoolean("vote", myVote);
- message.setInteger("pid", process.getProcessID());
- sendMessage(message);
-
- log("Abstimmung " + myVote + " versendet");
-
- } else if (recvMessage.getBoolean("isVoteResult")) {
- boolean voteResult = recvMessage.getBoolean("voteResult");
- log("Globales Abstimmungsergebnis erhalten. Ergebnis: " +
- voteResult);
-
- VSMessage message = new VSMessage();
- message.setBoolean("isAck", true);
- message.setInteger("pid", process.getProcessID());
- sendMessage(message);
- }
- }
-
- /* (non-Javadoc)
- * @see protocols.VSAbstractProtocol#onClientSchedule()
- */
- public void onClientSchedule() {
- }
-}
diff --git a/sources/serialize/VSNotSerializable.java b/sources/serialize/VSNotSerializable.java
deleted file mode 100644
index e5cb79c..0000000
--- a/sources/serialize/VSNotSerializable.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package serialize;
-
-/**
- * The Interface VSNotSerializable, this interface has no methods given and is
- * being used to distinguish if the simulator should not serialize an object
- * of the implementing class.
- *
- * @author Paul C. Buetow
- */
-public interface VSNotSerializable {
-}
diff --git a/sources/serialize/VSSerializable.java b/sources/serialize/VSSerializable.java
deleted file mode 100644
index a134909..0000000
--- a/sources/serialize/VSSerializable.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package serialize;
-
-import java.io.*;
-
-/**
- * The Interface VSSerializable, all classes which take part of the serialize/
- * deserialize proces are implementing this interface. It is preferred over the
- * standard Serializable interface of Java because we want not serialize the
- * whole class tree of each class but certain variables only!
- *
- * @author Paul C. Buetow
- */
-public interface VSSerializable {
- /**
- * Serializes
- *
- * @param serialize The serialize object
- * @param objectOutputStream The object output stream
- */
- public void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException;
- /**
- * Deserializes
- *
- * @param serialize The serialize object
- * @param objectInputStream The object input stream
- */
- public void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException;
-}
diff --git a/sources/serialize/VSSerialize.java b/sources/serialize/VSSerialize.java
deleted file mode 100644
index 891c5b5..0000000
--- a/sources/serialize/VSSerialize.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package serialize;
-
-import java.io.*;
-import java.util.HashMap;
-import javax.swing.*;
-
-import prefs.*;
-import simulator.*;
-
-/**
- * The class VSSerialize, this class helps do serialize/deserialize a saved
- * simulator!
- *
- * @author Paul C. Buetow
- */
-public final class VSSerialize {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** True if debug mode of serialization/deserialization */
- public static final boolean DEBUG = true;
-
- /** The last filename used for saveing/opening*/
- public static String LAST_FILENAME = null;
-
- /** For temp object storage */
- private static HashMap<String,Object> objects;
-
- /** Holds the current VSSerialize object */
- private static VSSerialize serialize;
-
- /**
- * Creates the VSSerialize object.
- */
- public VSSerialize() {
- init();
- }
-
- /**
- * Initializes the helper.
- */
- private void init() {
- this.serialize = this;
- objects = new HashMap<String,Object>();
- }
-
- /**
- * Gets the current VSSerialize object.
- *
- * @return The current serialize object
- */
- public static VSSerialize getSerialize() {
- return serialize;
- }
-
- /**
- * Sets an object.
- *
- * @param key The object key
- * @param object The object itself
- */
- public void setObject(String key, Object object) {
- if (DEBUG)
- System.out.println("setObject("+key+")");
-
- objects.put(key, object);
- }
-
- /**
- * Sets an object.
- *
- * @param num The object number
- * @param key The object key
- * @param object The object itself
- */
- public void setObject(int num, String key, Object object) {
- if (DEBUG)
- System.out.println("setObject("+key+":"+num+")");
-
- objects.put(key + ":" + num, object);
- }
-
- /**
- * Checks if an object exists.
- *
- * @param num The object number
- * @param key The object key
- *
- * @return true, if the object exists. false, if the object does not exist
- */
- public boolean objectExists(int num, String key) {
- return null != objects.get(key + ":" + num);
- }
-
- /**
- * Gets an object.
- *
- * @param num The object number
- * @param key The object key
- *
- * @return The object itself
- */
- public Object getObject(int num, String key) {
- Object object = objects.get(key + ":" + num);
-
- if (object == null) {
- System.err.println("No such deserialization helper key "
- + key + ":" + num);
- System.exit(1);
- }
-
- return object;
- }
-
- /**
- * Gets an object.
- *
- * @param key The object key
- *
- * @return The object itself
- */
- public Object getObject(String key) {
- Object object = objects.get(key);
-
- if (object == null) {
- System.err.println("No such deserialization helper key " + key);
- System.exit(1);
- }
-
- return object;
- }
-
- /**
- * Saves the given simulator to the given filename.
- *
- * @param filename The filename
- * @param simulator The simulator
- */
- public void saveSimulator(String filename, VSSimulator simulator) {
- if (filename == null) {
- saveSimulator(simulator);
- return;
- }
-
- LAST_FILENAME = filename;
-
- try {
- FileOutputStream fileOutputStream =
- new FileOutputStream(filename);
- ObjectOutputStream objectOutputStream =
- new ObjectOutputStream(fileOutputStream);
-
- VSSerializablePrefs prefs = (VSSerializablePrefs)
- simulator.getPrefs();
- prefs.serialize(this, objectOutputStream);
- simulator.serialize(this, objectOutputStream);
-
- } catch (IOException e) {
- //e.printStackTrace();
-
- } finally {
- //objectOutputStream.close();
- }
- }
-
- /**
- * Saves the given simulator to a file choosen by the file chooser.
- *
- * @param simulator The simulator
- */
- public void saveSimulator(VSSimulator simulator) {
- VSPrefs prefs = simulator.getPrefs();
- VSSimulatorFrame simulatorFrame = simulator.getSimulatorFrame();
-
- String saveText = prefs.getString("lang.en.save");
- JFileChooser fileChooser = new JFileChooser(
- new File(".").getPath());
- fileChooser.setMultiSelectionEnabled(false);
- fileChooser.addChoosableFileFilter(createFileFilter(prefs));
- fileChooser.setApproveButtonText(saveText);
-
- if (fileChooser.showOpenDialog(simulatorFrame) ==
- JFileChooser.APPROVE_OPTION) {
- String fileName = fileChooser.getSelectedFile().getAbsolutePath();
- System.out.println(saveText + ": " + fileName);
- saveSimulator(fileName, simulator);
- }
- }
-
- /**
- * Opens a simulator from the given filename.
- *
- * @param filename The filename.
- * @param simulatorFrame The simulator frame
- *
- * @return The simulator object, and null if no success
- */
- public VSSimulator openSimulator(String filename,
- VSSimulatorFrame simulatorFrame) {
- VSSimulator simulator = null;
- simulatorFrame.resetCurrentSimulator();
- LAST_FILENAME = filename;
-
- try {
- FileInputStream fileInputStream =
- new FileInputStream(filename);
- ObjectInputStream objectInputStream =
- new ObjectInputStream(fileInputStream);
-
- VSDefaultPrefs prefs = new VSDefaultPrefs();
- prefs.deserialize(this, objectInputStream);
- //prefs.useDefaultStrings(true);
- prefs.addWithDefaults();
-
- this.setObject("prefs", prefs);
-
- simulator = new VSSimulator(prefs, simulatorFrame);
- simulatorFrame.addSimulator(simulator);
- simulator.deserialize(this, objectInputStream);
-
- } catch (Exception e) {
- //e.printStackTrace();
-
- } finally {
- //objectInputStream.close();
- }
-
- return simulator;
- }
-
- /**
- * Opens a simulator from a file selected from a file chooser.
- *
- * @param simulatorFrame The simulator frame
- *
- * @return The simulator object, and null if no success
- */
- public VSSimulator openSimulator(VSSimulatorFrame simulatorFrame) {
- VSPrefs prefs = simulatorFrame.getPrefs();
-
- String openText = prefs.getString("lang.en.open");
- JFileChooser fileChooser = new JFileChooser(
- new File(".").getPath());
- fileChooser.setMultiSelectionEnabled(false);
- fileChooser.addChoosableFileFilter(createFileFilter(prefs));
- fileChooser.setApproveButtonText(openText);
-
- if (fileChooser.showOpenDialog(simulatorFrame) ==
- JFileChooser.APPROVE_OPTION) {
- String fileName = fileChooser.getSelectedFile().getAbsolutePath();
- System.out.println(openText + ": " + fileName);
- return openSimulator(fileName, simulatorFrame);
- }
-
- return null;
- }
-
- /**
- * Creates a file filter for the file choosers
- *
- * @param prefs The default prefs
- */
- private javax.swing.filechooser.FileFilter createFileFilter(
- final VSPrefs prefs) {
- return new javax.swing.filechooser.FileFilter() {
- public boolean accept(File file) {
- if (file.isDirectory())
- return true;
- return file.getName().toLowerCase().endsWith(".dat");
- }
-
- public String getDescription() {
- return prefs.getString("lang.en.dat");
- }
- };
- }
-
-}
diff --git a/sources/simulator/VSCreateTask.java b/sources/simulator/VSCreateTask.java
deleted file mode 100644
index 1b24255..0000000
--- a/sources/simulator/VSCreateTask.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package simulator;
-
-import core.*;
-import events.*;
-import events.internal.*;
-
-/**
- * The class VSCreateTask, an object of this class represents how new
- * VSTask objects are to be created using JComboBox selections of the
- * GUI editor..
- *
- * @author Paul C. Buetow
- */
-public class VSCreateTask {
- /** the serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The event classname. */
- private String eventClassname;
-
- /** The create task menu string. */
- private String menuText;
-
- /** The protocol classname. */
- private String protocolClassname;
-
- /** The shortname. */
- private String shortname;
-
- /** The task is a protocol activation. */
- private boolean isProtocolActivation;
-
- /** The task is a protocol deactivation. */
- private boolean isProtocolDeactivation;
-
- /** The task is a client protocol. */
- private boolean isClientProtocol;
-
- /** True, if the task is a client request. false, if the task is a
- * server request
- */
- private boolean isRequest;
-
- /**
- * Instantiates a new VSCreateTask object.
- *
- * @param menuText the menu text
- * @param eventClassname the event classname
- */
- public VSCreateTask(String menuText, String eventClassname) {
- this.menuText = menuText;
- this.eventClassname = eventClassname;
- }
-
- /**
- * Instantiates a new VSCreateTask dummy object.
- *
- * @param menuText the menu text
- */
- public VSCreateTask(String menuText) {
- this.menuText = menuText;
- this.eventClassname = null;
- }
-
- /**
- * Sets if it is a protocol activation task.
- *
- * @param isProtocolActivation true, if it is a protocol activation
- * task.
- */
- public void isProtocolActivation(boolean isProtocolActivation) {
- this.isProtocolActivation = isProtocolActivation;
-
- if (isProtocolActivation)
- isProtocolDeactivation(false);
- }
-
- /**
- * Sets if it is a protocol deactivation task.
- *
- * @param isProtocolDeactivation true, if it is a protocol deactivation
- * task.
- */
- public void isProtocolDeactivation(boolean isProtocolDeactivation) {
- this.isProtocolDeactivation = isProtocolDeactivation;
-
- if (isProtocolDeactivation)
- isProtocolActivation(false);
- }
-
- /**
- * Sets if it is a client protocol.
- *
- * @param isClientProtocol the is client protocol
- */
- public void isClientProtocol(boolean isClientProtocol) {
- this.isClientProtocol = isClientProtocol;
- }
-
- /**
- * Sets if it is a client request.
- *
- * @param isRequest the is client request
- */
- public void isRequest(boolean isRequest) {
- this.isRequest = isRequest;
- }
-
- /**
- * Checks if it is a dummy object..
- *
- * @return true, if dummy
- */
- public boolean isDummy() {
- return eventClassname == null;
- }
-
- /**
- * Sets the protocol classname.
- *
- * @param protocolClassname the protocol classname
- */
- public void setProtocolClassname(String protocolClassname) {
- this.protocolClassname = protocolClassname;
- }
-
- /**
- * Sets the shortname.
- *
- * @param shortname the shortname
- */
- public void setShortname(String shortname) {
- this.shortname = shortname;
- }
-
- /**
- * Gets the create tasks menu text.
- *
- * @return The text
- */
- public String getMenuText() {
- return menuText;
- }
-
- /**
- * Creates the task.
- *
- * @param process the process
- * @param time the time
- * @param localTimedTask the local timed task
- *
- * @return the new task
- */
- public VSTask createTask(VSInternalProcess process, long time,
- boolean localTimedTask) {
- VSAbstractEvent event = null;
-
- if (isRequest) {
- event = process.getProtocolObject(eventClassname);
-
- } else {
- event = VSRegisteredEvents.createEventInstanceByClassname(
- eventClassname, process);
- }
-
- event.init(process);
- if (shortname != null)
- event.setShortname(shortname);
-
- if (isProtocolActivation || isProtocolDeactivation) {
- VSProtocolEvent protocolEvent = (VSProtocolEvent) event;
- protocolEvent.setProtocolClassname(protocolClassname);
- protocolEvent.isProtocolActivation(isProtocolActivation);
- protocolEvent.isClientProtocol(isClientProtocol);
- }
-
- return new VSTask(time, process, event, localTimedTask);
- }
-}
-
diff --git a/sources/simulator/VSLogging.java b/sources/simulator/VSLogging.java
deleted file mode 100644
index f85ad75..0000000
--- a/sources/simulator/VSLogging.java
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package simulator;
-
-import java.util.*;
-import java.util.regex.*;
-import javax.swing.*;
-
-import utils.*;
-
-/**
- * The class VSLogging, an object of this class is responsible for the loging
- * of text messages into the simulator's loging window.
- *
- * @author Paul C. Buetow
- */
-public class VSLogging {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The loging area. */
- private JTextArea logingArea;
-
- /** The filter text. */
- private String filterText;
-
- /** The pause lines. Used for cacheing the loging if the loging is
- * deactivated for a while
- */
- private ArrayList<StringBuffer> pauseLines;
-
- /** The loging lines. */
- private ArrayList<StringBuffer> logingLines;
-
- /** The simulator canvas. */
- private VSSimulatorVisualization simulatorVisualization;
-
- /** The loging messages are filtered. */
- private boolean isFiltered;
-
- /** The loging is paused. */
- private boolean isPaused;
-
- /** The filter pattern. */
- private Pattern filterPattern;
-
- /**
- * Instantiates a new VSLogging object.
- */
- public VSLogging() {
- logingArea = new JTextArea(0, 0);
- logingArea.setEditable(false);
- logingArea.setLineWrap(true);
- logingArea.setWrapStyleWord(true);
- logingLines = new ArrayList<StringBuffer>();
- pauseLines = new ArrayList<StringBuffer>();
- filterText = "";
- }
-
- /**
- * Sets the simulator canvas.
- *
- * @param sv the simulator canvas
- */
- public void setSimulatorCanvas(VSSimulatorVisualization sv) {
- this.simulatorVisualization = sv;
- }
-
- /**
- * Gets the loging area.
- *
- * @return the loging area
- */
- public JTextArea getLoggingArea() {
- return logingArea;
- }
-
- /**
- * Loggs a message using the global time.
- *
- * @param message the message
- */
- public void log(String message) {
- if (simulatorVisualization == null)
- log(message, 0);
- else
- log(message, simulatorVisualization.getTime());
- }
-
- /**
- * Loggs a message using the specified time.
- *
- * @param message the message
- * @param time the time
- */
- public synchronized void log(String message, long time) {
- StringBuffer buffer = new StringBuffer();
- buffer.append(VSTools.getTimeString(time));
- buffer.append(": ");
- buffer.append(message);
-
- if (isPaused)
- pauseLines.add(buffer);
- else
- logFiltered(buffer);
- }
-
- /**
- * Sets if the loging is paused.
- *
- * @param isPaused true, if the loging is paused
- */
- public synchronized void isPaused(boolean isPaused) {
- this.isPaused = isPaused;
-
- if (!isPaused) {
- for (StringBuffer buffer : pauseLines)
- logFiltered(buffer);
-
- pauseLines.clear();
- }
- }
-
- /**
- * If the loging is filtered, it's using the pattern matching.
- *
- * @param buffer the loging buffer to filter
- */
- private void logFiltered(StringBuffer buffer) {
- logingLines.add(buffer);
- if (!isFiltered) {
- logingArea.append(buffer.toString()+"\n");
- logingArea.setCaretPosition(
- logingArea.getDocument().getLength());
-
- } else if (filterPattern != null &&
- filterPattern.matcher(buffer).find()) {
- logingArea.append(buffer.toString()+"\n");
- logingArea.setCaretPosition(
- logingArea.getDocument().getLength());
- }
- }
-
- /**
- * Checks if the loging is filtered.
- *
- * @param isFiltered true, if the loging is filtered
- */
- public synchronized void isFiltered(boolean isFiltered) {
- this.isFiltered = isFiltered;
-
- if (!isFiltered)
- setFilterText("");
- else
- filter();
- }
-
- /**
- * Sets the filter text.
- *
- * @param filterText the new filter text
- */
- public synchronized void setFilterText(String filterText) {
- this.filterText = filterText;
- filter();
- }
-
- /**
- * Clears the loging.
- */
- public synchronized void clear() {
- logingLines.clear();
- pauseLines.clear();
- logingArea.setText("");
- }
-
- /**
- * Filters the loging.
- */
- private void filter() {
- try {
- filterPattern = Pattern.compile(filterText);
- StringBuffer buffer = new StringBuffer();
-
- for (StringBuffer line : logingLines) {
- if (isFiltered) {
- Matcher matcher = filterPattern.matcher(line);
- if (matcher.find()) {
- buffer.append(line);
- buffer.append("\n");
- }
- } else {
- buffer.append(line);
- buffer.append("\n");
- }
- }
- logingArea.setText(buffer.toString());
-
- } catch (Exception e) {
- filterPattern = null;
- logingArea.setText("");
- }
- }
-}
diff --git a/sources/simulator/VSMain.java b/sources/simulator/VSMain.java
deleted file mode 100644
index 70b112e..0000000
--- a/sources/simulator/VSMain.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package simulator;
-
-import java.awt.*;
-import java.util.Locale;
-import javax.swing.*;
-
-import events.*;
-import prefs.*;
-//import prefs.editors.*;
-
-/**
- * The class VSMain. This class contains the static main method. The simulator
- * starts here!
- *
- * @author Paul C. Buetow
- */
-public class VSMain {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The global preferences */
- public static VSPrefs prefs;
-
- /**
- * Instantiates a new VSMain object.
- *
- * @param prefs the prefs
- */
- public VSMain(VSPrefs prefs) {
- init(prefs, null);
- }
-
- /**
- * Instantiates a new VSMain object
- *
- * @param prefs the prefs
- * @param relativeTo the component to open the window relative to
- */
- public VSMain(VSPrefs prefs, Component relativeTo) {
- init(prefs, relativeTo);
- }
-
- /**
- * Inits the VSMain object.
- *
- * @param prefs the prefs
- * @param relativeTo the component to open the window relative to
- */
- private void init(VSPrefs prefs, Component relativeTo) {
- //VSSimulatorFrame simulatorFrame =
- VSMain.prefs = prefs;
- new VSSimulatorFrame(prefs, relativeTo);
- }
-
- /**
- * The main method.
- *
- * @param args the arguments
- */
- public static void main(String[] args) {
- try {
- UIManager.setLookAndFeel(
- UIManager.getCrossPlatformLookAndFeelClassName());
- } catch (Exception e) { }
-
- Locale.setDefault(Locale.GERMAN);
- javax.swing.JPopupMenu.setDefaultLightWeightPopupEnabled(false);
- VSPrefs prefs = VSDefaultPrefs.init();
- VSRegisteredEvents.init(prefs);
- new VSMain(prefs);
- }
-}
diff --git a/sources/simulator/VSMenuItemStates.java b/sources/simulator/VSMenuItemStates.java
deleted file mode 100644
index fe69d92..0000000
--- a/sources/simulator/VSMenuItemStates.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package simulator;
-
-/**
- * The class VSMenuItemStates. Used by the VSSimulator to update the
- * "simulator" bar of the VSSimulatorFrame.
- *
- * @author Paul C. Buetow
- */
-public class VSMenuItemStates {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The pause state. */
- private volatile boolean pause;
-
- /** The replay state. */
- private volatile boolean replay;
-
- /** The reset state. */
- private volatile boolean reset;
-
- /** The start state. */
- private volatile boolean start;
-
- /**
- * Instantiates a new VSMenuItemStates object.
- *
- * @param pause the pause state
- * @param replay the replay state
- * @param reset the reset state
- * @param start the start state
- */
- public VSMenuItemStates(boolean pause, boolean replay, boolean reset,
- boolean start) {
- this.pause = pause;
- this.replay = replay;
- this.reset = reset;
- this.start = start;
- }
-
- /**
- * Sets the pause state.
- *
- * @param pause the new pause state
- */
- public void setPause(boolean pause) {
- this.pause = pause;
- }
-
- /**
- * Sets the replay state.
- *
- * @param replay the new replay state
- */
- public void setReplay(boolean replay) {
- this.replay = replay;
- }
-
- /**
- * Sets the reset state.
- *
- * @param reset the new reset state
- */
- public void setReset(boolean reset) {
- this.reset = reset;
- }
-
- /**
- * Sets the start state.
- *
- * @param start the new start state
- */
- public void setStart(boolean start) {
- this.start = start;
- }
-
- /**
- * Gets the pause state.
- *
- * @return the pause state
- */
- public boolean getPause() {
- return pause;
- }
-
- /**
- * Gets the replay state.
- *
- * @return the replay state
- */
- public boolean getReplay() {
- return replay;
- }
-
- /**
- * Gets the reset state.
- *
- * @return the reset state
- */
- public boolean getReset() {
- return reset;
- }
-
- /**
- * Gets the start state.
- *
- * @return the start state
- */
- public boolean getStart() {
- return start;
- }
-}
diff --git a/sources/simulator/VSSimulator.java b/sources/simulator/VSSimulator.java
deleted file mode 100644
index fdcf40d..0000000
--- a/sources/simulator/VSSimulator.java
+++ /dev/null
@@ -1,1537 +0,0 @@
-/*
- * VS-Simulator (http://vs-sim.buetow.org)
- * Copyright (c) 2008 - 2009 by Dipl.-Inform. (FH) Paul C. Buetow
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package simulator;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.io.*;
-import java.util.*;
-import javax.swing.*;
-import javax.swing.event.*;
-import javax.swing.table.*;
-
-import core.*;
-import events.*;
-import exceptions.*;
-import prefs.*;
-import prefs.editors.*;
-import serialize.*;
-
-/**
- * The class VSSimulator, an object of this class represents a whole simulator.
- * It may be, that several parallel simulators exist. They are independent
- * fron each other.
- *
- * @author Paul C. Buetow
- */
-public class VSSimulator extends JPanel implements VSSerializable {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The global text fields. */
- private ArrayList<String> globalTextFields;
-
- /** The local text fields. */
- private ArrayList<String> localTextFields;
-
- /** The create tasks array list. */
- private ArrayList<VSCreateTask> createTasks;
-
- /** The filter active check box. */
- private JCheckBox filterActiveCheckBox;
-
- /** The lamport active check box. */
- private JCheckBox lamportActiveCheckBox;
-
- /** The vector time active check box. */
- private JCheckBox vectorTimeActiveCheckBox;
-
- /** The global pid combo box. */
- private JComboBox globalPIDComboBox;
-
- /** The local pid combo box. */
- private JComboBox localPIDComboBox;
-
- /** The processes combo box. */
- private JComboBox processesComboBox;
-
- /** The local add panel. */
- private JPanel localAddPanel;
-
- /** The local panel. */
- private JPanel localPanel;
-
- /** The loging panel. */
- private JPanel logingPanel;
-
- /** The split pane1. */
- private JSplitPane splitPane1;
-
- /** The split pane h. */
- private JSplitPane splitPaneH;
-
- /** The split pane v. */
- private JSplitPane splitPaneV;
-
- /** The tabbed pane. */
- private JTabbedPane tabbedPane;
-
- /** The loging area. */
- private JTextArea logingArea;
-
- /** The filter text field. */
- private JTextField filterTextField;
-
- /** The global text field. */
- private JTextField globalTextField;
-
- /** The local text field. */
- private JTextField localTextField;
-
- /** The thread. */
- private Thread thread;
-
- /** The loging. */
- private VSLogging loging;
-
- /** The menu item states. */
- private VSMenuItemStates menuItemStates;
-
- /** The prefs. */
- private VSPrefs prefs;
-
- /** The simulator canvas. */
- private VSSimulatorVisualization simulatorVisualization;
-
- /** The simulator frame. */
- private VSSimulatorFrame simulatorFrame;
-
- /** The task manager. */
- private VSTaskManager taskManager;
-
- /** The task manager global model. */
- private VSTaskManagerTableModel taskManagerGlobalModel;
-
- /** The task manager local model. */
- private VSTaskManagerTableModel taskManagerLocalModel;
-
- /** The task manager global editor. */
- private VSTaskManagerCellEditor taskManagerGlobalEditor;
-
- /** The task manager local editor. */
- private VSTaskManagerCellEditor taskManagerLocalEditor;
-
- /** The last selected process num. */
- private int lastSelectedProcessNum;
-
- /** The last expert state. */
- private boolean lastExpertState;
-
- /** The simulator counter. */
- private static int simulatorCounter;
-
- /** The simulator num. */
- private static int simulatorNum;
-
- /**
- * The class VSTaskManagerTableModel, an object of this class handles
- * the task manager's JTable.
- */
- @SuppressWarnings("unchecked")
- private class VSTaskManagerTableModel extends AbstractTableModel
- implements MouseListener {
- /** the serial version uid */
- private static final long serialVersionUID = 1l;
-
- /** The Constant LOCAL. */
- public static final boolean LOCAL = true;
-
- /** The Constant GLOBAL. */
- public static final boolean GLOBAL = false;
-
- /** The Constant ALL_PROCESSES. */
- public static final boolean ALL_PROCESSES = true;
-
- /** The Constant ONE_PROCESS. */
- public static final boolean ONE_PROCESS = false;
-
- /** The all processes. */
- public boolean allProcesses;
-
- /** The tasks. */
- private ArrayList<VSTask> tasks;
-
- /** The column names. */
- private String columnNames[];
-
- /** The num columns. */
- private int numColumns;
-
- /** The table. */
- //private JTable table;
-
- /** The editor. */
- //private VSTaskManagerCellEditor editor;
-
- /**
- * Instantiates a new VSTaskManagerTableModel object
- *
- * @param process the process
- * @param localTask true, if this table manages the local task. false,
- * if this table manages the global tasks.
- */
- public VSTaskManagerTableModel(VSInternalProcess process,
- boolean localTask) {
- tasks = new ArrayList<VSTask>();
- set(process, localTask, ONE_PROCESS);
- columnNames = new String[3];
- columnNames[0]= prefs.getString("lang.en.time") + " (ms)";
- columnNames[1] = prefs.getString("lang.en.process.id");
- columnNames[2] = prefs.getString("lang.en.event");
- numColumns = 3;
- }
-
- /**
- * Sets the table.
- *
- * @param table the table
- */
- public void setTable(JTable table) {
- /* Maybe needed for future usage */
- //this.table = table;
- }
-
- /**
- * Sets the editor.
- *
- * @param editor the editor
- */
- public void setEditor(VSTaskManagerCellEditor editor) {
- /* Maybe needed for future usage */
- //this.editor = editor;
- }
-
- /**
- * Sets new values.
- *
- * @param process the process
- * @param localTasks true, if this table manages the local tasks. false
- * if this table manages the global tasks.
- * @param allProcesses true, if this table shows tasks of all processes.
- * false, if this table only shows tasks of the specified process.
- */
- public void set(VSInternalProcess process, boolean localTasks,
- boolean allProcesses) {
- this.allProcesses = allProcesses;
-
- if (allProcesses) {
- this.tasks = localTasks
- ? taskManager.getLocalTasks()
- : taskManager.getGlobalTasks();
- } else {
- this.tasks = localTasks
- ? taskManager.getProcessLocalTasks(process)
- : taskManager.getProcessGlobalTasks(process);
- }
-
- Collections.sort(tasks);
- fireTableDataChanged();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.AbstractTableModel#getColumnName(int)
- */
- public String getColumnName(int col) {
- return columnNames[col];
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getRowCount()
- */
- public int getRowCount() {
- return tasks == null ? 0 : tasks.size();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getColumnCount()
- */
- public int getColumnCount() {
- return numColumns;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.TableModel#getValueAt(int, int)
- */
- public Object getValueAt(int row, int col) {
- VSTask task = tasks.get(row);
-
- switch (col) {
- case 0:
- return task.getTaskTime();
- case 1:
- return task.getProcess().getProcessID();
- }
-
- return task.getEvent().getShortname();
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.AbstractTableModel#isCellEditable(int, int)
- */
- public boolean isCellEditable(int row, int col) {
- if (col == 2)
- return false;
-
- return true;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.table.AbstractTableModel#setValueAt(
- * java.lang.Object, int, int)
- */
- public void setValueAt(Object value, int row, int col) {
- }
-
- /**
- * Adds the task.
- *
- * @param task the task
- */
- public void addTask(VSTask task) {
- tasks.add(task);
- Collections.sort(tasks);
- fireTableDataChanged();
- }
-
- /**
- * Removes the task at a specified row.
- *
- * @param row the row
- * @return The removed task
- */
- public VSTask removeTaskAtRow(int row) {
- VSTask task = tasks.get(row);
- tasks.remove(task);
- taskManager.removeTask(task);
- fireTableDataChanged();
- return task;
- }
-
- /**
- * Checks if a specific row exists
- *
- * @param row the row
- * @return True, if the row exists. False, if not
- */
- public boolean rowExists(int row) {
- if (row < 0)
- return false;
-
- if (tasks.size() <= row)
- return false;
-
- return true;
- }
-
- /**
- * Gets the task at a specified row.
- *
- * @param row the row
- * @return The task
- */
- public VSTask getTaskAtRow(int row) {
- return tasks.get(row);
- }
-
- /**
- * Gets the index of a specific task
- *
- * @param task The task
- * @return The index of the task
- */
- public int getIndexOf(VSTask task) {
- return tasks.indexOf(task);
- }
-
- /**
- * Copies the tasks at a specified rows.
- *
- * @param rows the rows
- */
- private void copyTasksAtRows(int rows[]) {
- ArrayList<VSTask> copiedTasks = new ArrayList<VSTask>();
-
- for (int row : rows)
- /* Use the copy constructor */
- copiedTasks.add(new VSTask(tasks.get(row)));
-
- for (VSTask task : copiedTasks) {
- taskManager.addTask(task, VSTaskManager.PROGRAMMED);
- addTask(task);
- }
-
- fireTableDataChanged();
- }
-
- /* (non-Javadoc)
- * @see java.awt.event.MouseListener#mouseClicked(
- * java.awt.event.MouseEvent)
- */
- public void mouseClicked(MouseEvent me) {
- final JTable source = (JTable) me.getSource();
- //final int row = source.rowAtPoint(me.getPoint());
- //final int col = source.columnAtPoint(me.getPoint());
-
- if (SwingUtilities.isRightMouseButton(me)) {
- ActionListener actionListener = new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- String command = ae.getActionCommand();
- int rows[] = source.getSelectedRows();
-
- if (command.equals(prefs.getString("lang.en.remove"))) {
- for (int i = rows.length - 1; i >= 0; --i)
- removeTaskAtRow(rows[i]);
-
- } else if (command.equals(
- prefs.getString("lang.en.copy"))) {
- copyTasksAtRows(rows);
- }
- }
- };
-
- JPopupMenu popup = new JPopupMenu();
- JMenuItem item = new JMenuItem(prefs.getString("lang.en.remove"));
- item.addActionListener(actionListener);
- popup.add(item);
-
- item = new JMenuItem(prefs.getString("lang.en.copy"));
- item.addActionListener(actionListener);
- popup.add(item);
-
- popup.show(me.getComponent(), me.getX(), me.getY());
- }
- }
-
- /* (non-Javadoc)
- * @see java.awt.event.MouseListener#mouseEntered(
- * java.awt.event.MouseEvent)
- */
- public void mouseEntered(MouseEvent me) { }
-
- /* (non-Javadoc)
- * @see java.awt.event.MouseListener#mouseExited(
- * java.awt.event.MouseEvent)
- */
- public void mouseExited(MouseEvent me) { }
-
- /* (non-Javadoc)
- * @see java.awt.event.MouseListener#mousePressed(
- * java.awt.event.MouseEvent)
- */
- public void mousePressed(MouseEvent me) { }
-
- /* (non-Javadoc)
- * @see java.awt.event.MouseListener#mouseReleased(
- * java.awt.event.MouseEvent)
- */
- public void mouseReleased(MouseEvent me) { }
- }
-
- /**
- * The class VSTaskManagerCellEditor, an object of this class handles
- * the task manager's JTable editor
- */
- private class VSTaskManagerCellEditor extends AbstractCellEditor
- implements TableCellEditor {
- /** the serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The JTable model */
- private VSTaskManagerTableModel model;
-
- /**
- * Instantiates a new VSTaskManagerCellEditor object.
- *
- * @param model the model
- */
- public VSTaskManagerCellEditor(VSTaskManagerTableModel model) {
- this.model = model;
- model.setEditor(this);
- }
-
- /**
- * Stops editing
- */
- public void stopEditing() {
- fireEditingStopped();
- }
-
- /**
- /* (non-Javadoc)
- * @see javax.swing.table.TableCellEditor#getTableCellEditorComponent(
- * javax.swing.JTable, java.lang.Object, boolean, int, int)
- */
- public Component getTableCellEditorComponent(final JTable table,
- Object object,
- boolean isSelected,
- final int row,
- final int col) {
- switch (col) {
- case 0:
- Long val = (Long) model.getValueAt(row, col);
- final JTextField valField = new JTextField(val.toString());
- valField.setBackground(Color.WHITE);
- valField.setBorder(null);
- valField.addActionListener(new ActionListener() {
- private boolean isRed = false;
- public void actionPerformed(ActionEvent ae) {
- try {
- Long val = Long.valueOf(valField.getText());
- if (val.longValue() < 0)
- throw new VSNegativeNumberException();
- VSTask task = model.removeTaskAtRow(row);
- task.setTaskTime(val.longValue());
- taskManager.addTask(task, VSTaskManager.PROGRAMMED);
- model.addTask(task);
- if (isRed) {
- valField.setBackground(Color.WHITE);
- isRed = false;
- }
- int index = model.getIndexOf(task);
- ListSelectionModel selectionModel =
- table.getSelectionModel();
- selectionModel.setSelectionInterval(index, index);
- fireEditingStopped();
-
- } catch (NumberFormatException exc) {
- valField.setBackground(Color.RED);
- isRed = true;
-
- } catch (VSNegativeNumberException exc) {
- valField.setBackground(Color.RED);
- isRed = true;
- }
- }
- });
- return valField;
- case 1:
- Integer current[] = { (Integer) model.getValueAt(row, col) };
- final JComboBox comboBox = new JComboBox(current);
-
- Integer pids[] = simulatorVisualization.getProcessIDs();
- for (Integer pid : pids)
- comboBox.addItem(pid);
-
- comboBox.setSelectedIndex(0);
- comboBox.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- int index = comboBox.getSelectedIndex() - 1;
- if (model.rowExists(row)) {
- VSTask task = model.removeTaskAtRow(row);
- VSInternalProcess process =
- simulatorVisualization.getProcess(index);
- task.setProcess(process);
- taskManager.addTask(task, VSTaskManager.PROGRAMMED);
- if (allProcessesAreSelected())
- model.addTask(task);
- }
-
- fireEditingStopped();
- }
- });
-
- return comboBox;
- case 2:
- break;
- }
-
- return null;
- }
-
- /* (non-Javadoc)
- * @see javax.swing.CellEditor#getCellEditorValue()
- */
- public Object getCellEditorValue() {
- return new String("");
- }
- }
-
-
- /**
- * Instantiates a new VSSimulator object.
- *
- * @param prefs the prefs
- * @param simulatorFrame the simulator frame
- */
- public VSSimulator(VSPrefs prefs, VSSimulatorFrame simulatorFrame) {
- init(prefs, simulatorFrame);
- }
-
- /**
- * inits the VSSimulator object.
- *
- * @param prefs the prefs
- * @param simulatorFrame the simulator frame
- */
- private void init(VSPrefs prefs, VSSimulatorFrame simulatorFrame) {
- this.prefs = prefs;
- this.simulatorFrame = simulatorFrame;
- this.simulatorNum = ++simulatorCounter;
- this.menuItemStates = new VSMenuItemStates(false, false, false, true);
- this.localTextFields = new ArrayList<String>();
- this.globalTextFields = new ArrayList<String>();
-
- /* Not null if init has been called from the deserialization */
- if (this.loging == null)
- this.loging = new VSLogging();
-
- loging.log(prefs.getString("lang.en.simulator.new"));
-
- fillContentPane();
- updateFromPrefs();
-
- splitPaneH.setDividerLocation(
- prefs.getInteger("div.window.splitsize"));
-
- splitPaneV.setDividerLocation(
- prefs.getInteger("div.window.ysize")
- - prefs.getInteger("div.window.logsize"));
-
- splitPane1.setDividerLocation((int) (getPaintSize()/2) - 20);
-
- int numProcesses = simulatorVisualization.getNumProcesses();
- for (int i = 0; i <= numProcesses; ++i) {
- localTextFields.add("0000");
- globalTextFields.add("0000");
- }
-
- processesComboBox.setSelectedIndex(0);
- localPIDComboBox.setSelectedIndex(0);
- globalPIDComboBox.setSelectedIndex(0);
-
- thread = new Thread(simulatorVisualization);
- thread.start();
- }
-
- /**
- * Fills the content pane.
- */
- private void fillContentPane() {
- logingArea = loging.getLoggingArea();
-
- splitPaneH = new JSplitPane();
- splitPaneV = new JSplitPane();
-
- /* Not null if init has been called from the deserialization */
- if (this.simulatorVisualization == null)
- simulatorVisualization = new VSSimulatorVisualization(
- prefs, this, loging);
-
- taskManager = simulatorVisualization.getTaskManager();
- loging.setSimulatorCanvas(simulatorVisualization);
-
- JPanel canvasPanel = new JPanel();
- canvasPanel.setLayout(new GridLayout(1, 1, 3, 3));
- canvasPanel.add(simulatorVisualization);
- canvasPanel.setMinimumSize(new Dimension(0, 0));
- canvasPanel.setMaximumSize(new Dimension(0, 0));
-
- logingPanel = new JPanel(new BorderLayout());
- logingPanel.add(new JScrollPane(logingArea), BorderLayout.CENTER);
- logingPanel.add(createToolsPanel(), BorderLayout.SOUTH);
- logingPanel.setPreferredSize(new Dimension(200, 1));
-
- splitPaneH.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
- splitPaneH.setLeftComponent(createProcessPanel());
- splitPaneH.setRightComponent(canvasPanel);
- splitPaneH.setContinuousLayout(true);
- splitPaneH.setOneTouchExpandable(true);
-
- splitPaneV.setOrientation(JSplitPane.VERTICAL_SPLIT);
- splitPaneV.setTopComponent(splitPaneH);
- splitPaneV.setBottomComponent(logingPanel);
- splitPaneV.setContinuousLayout(true);
-
- this.add(splitPaneV);
- }
-
- /**
- * Creates the tools panel.
- *
- * @return the panel
- */
- private JPanel createToolsPanel() {
- JPanel toolsPanel = new JPanel();
- boolean expertMode = prefs.getBoolean("sim.mode.expert");
-
- toolsPanel.setLayout(new BoxLayout(toolsPanel, BoxLayout.X_AXIS));
- JCheckBox expertActiveCheckBox =
- new JCheckBox(prefs.getString("lang.en.mode.expert"));
-
- expertActiveCheckBox.setSelected(expertMode);
- expertActiveCheckBox.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton =
- (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- boolean newState = buttonModel.isSelected();
- if (lastExpertState != newState) {
- lastExpertState = newState;
- prefs.setBoolean("sim.mode.expert", newState);
- fireExpertModeChanged();
- }
- }
- });
- toolsPanel.add(expertActiveCheckBox);
-
- if (expertMode) {
- lamportActiveCheckBox = new JCheckBox(
- prefs.getString("lang.en.time.lamport"));
- lamportActiveCheckBox.setSelected(false);
- lamportActiveCheckBox.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton =
- (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- simulatorVisualization.showLamport(
- buttonModel.isSelected());
- if (buttonModel.isSelected())
- vectorTimeActiveCheckBox.setSelected(false);
- }
- });
- toolsPanel.add(lamportActiveCheckBox);
-
- vectorTimeActiveCheckBox = new JCheckBox(
- prefs.getString("lang.en.time.vector"));
- vectorTimeActiveCheckBox.setSelected(false);
- vectorTimeActiveCheckBox.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton =
- (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- simulatorVisualization.showVectorTime(
- buttonModel.isSelected());
- if (buttonModel.isSelected())
- lamportActiveCheckBox.setSelected(false);
- }
- });
- toolsPanel.add(vectorTimeActiveCheckBox);
-
- JCheckBox antiAliasing = new JCheckBox(
- prefs.getString("lang.en.antialiasing"));
- antiAliasing.setSelected(false);
- antiAliasing.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton =
- (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- simulatorVisualization.isAntiAliased(
- buttonModel.isSelected());
- }
- });
- toolsPanel.add(antiAliasing);
- }
-
- JCheckBox logingActiveCheckBox = new JCheckBox(
- prefs.getString("lang.en.loging.active"));
- logingActiveCheckBox.setSelected(true);
- logingActiveCheckBox.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton =
- (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- loging.isPaused(!buttonModel.isSelected());
- }
- });
- toolsPanel.add(logingActiveCheckBox);
-
- if (expertMode) {
- filterActiveCheckBox = new JCheckBox(
- prefs.getString("lang.en.filter"));
- filterActiveCheckBox.setSelected(false);
- filterActiveCheckBox.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton =
- (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- loging.isFiltered(buttonModel.isSelected());
- if (buttonModel.isSelected())
- loging.setFilterText(filterTextField.getText());
- }
- });
- toolsPanel.add(filterActiveCheckBox);
-
- filterTextField = new JTextField();
- filterTextField.getDocument().addDocumentListener(
- new DocumentListener() {
- public void insertUpdate(DocumentEvent de) {
- loging.setFilterText(filterTextField.getText());
- }
- public void removeUpdate(DocumentEvent de) {
- loging.setFilterText(filterTextField.getText());
- }
- public void changedUpdate(DocumentEvent de) {
- loging.setFilterText(filterTextField.getText());
- }
- });
- toolsPanel.add(filterTextField);
-
- JButton clearButton = new JButton(
- prefs.getString("lang.en.loging.clear"));
- clearButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- String command = ae.getActionCommand();
- if (command.equals(
- prefs.getString("lang.en.loging.clear"))) {
- loging.clear();
- }
- }
- });
- toolsPanel.add(clearButton);
- }
-
- return toolsPanel;
- }
-
- /**
- * Creates the process panel.
- *
- * @return the panel
- */
- private JPanel createProcessPanel() {
- JPanel editPanel = new JPanel(new GridBagLayout());
- boolean expertMode = prefs.getBoolean("sim.mode.expert");
- editPanel.setLayout(new BoxLayout(editPanel, BoxLayout.Y_AXIS));
-
- processesComboBox = new JComboBox();
- localPIDComboBox = new JComboBox();
- globalPIDComboBox = new JComboBox();
-
- lastSelectedProcessNum = 0;
- int numProcesses = simulatorVisualization.getNumProcesses();
- String processString = prefs.getString("lang.en.process");
-
- for (int i = 0; i < numProcesses; ++i) {
- int pid = simulatorVisualization.getProcess(i).getProcessID();
- processesComboBox.addItem(processString + " " + pid);
- localPIDComboBox.addItem("PID: " + pid);
- globalPIDComboBox.addItem("PID: " + pid);
- }
-
- processesComboBox.addItem(prefs.getString("lang.en.processes.all"));
- localPIDComboBox.addItem(prefs.getString("lang.en.all"));
- globalPIDComboBox.addItem(prefs.getString("lang.en.all"));
-
- tabbedPane = new JTabbedPane(JTabbedPane.TOP,
- JTabbedPane.WRAP_TAB_LAYOUT);
- localPanel = createTaskLabel(VSTaskManagerTableModel.LOCAL);
- JPanel globalPanel = createTaskLabel(VSTaskManagerTableModel.GLOBAL);
-
- splitPane1 = new JSplitPane();
- splitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT);
- splitPane1.setTopComponent(localPanel);
- splitPane1.setBottomComponent(globalPanel);
- splitPane1.setOneTouchExpandable(true);
-
- if (expertMode)
- tabbedPane.addTab(prefs.getString("lang.en.events"), splitPane1);
-
- else
- tabbedPane.addTab(prefs.getString("lang.en.events"), localPanel);
-
- processesComboBox.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- localTextFields.set(lastSelectedProcessNum,
- localTextField.getText());
- globalTextFields.set(lastSelectedProcessNum,
- globalTextField.getText());
- updateTaskManagerTable();
-
- int processNum = getSelectedProcessNum();
- localTextField.setText(localTextFields.get(processNum));
- globalTextField.setText(globalTextFields.get(processNum));
- localTextField.setBackground(Color.WHITE);
- globalTextField.setBackground(Color.WHITE);
- lastSelectedProcessNum = processNum;
-
- localPIDComboBox.setSelectedIndex(processNum);
- globalPIDComboBox.setSelectedIndex(processNum);
-
- if (processNum == simulatorVisualization.getNumProcesses()) {
- tabbedPane.setEnabledAt(1, false);
- if (tabbedPane.getSelectedIndex() == 1)
- tabbedPane.setSelectedIndex(0);
-
- } else if (!tabbedPane.isEnabledAt(1)) {
- tabbedPane.setEnabledAt(1, true);
- }
-
- if (processNum != simulatorVisualization.getNumProcesses()) {
- VSInternalProcess process = getSelectedProcess();
- VSProcessEditor processEditor =
- new VSProcessEditor(prefs, process);
- tabbedPane.setComponentAt(1,
- processEditor.getContentPane());
- }
- }
- });
-
- tabbedPane.add(prefs.getString("lang.en.variables"), null);
-
- editPanel.add(processesComboBox);
- editPanel.add(tabbedPane);
-
- return editPanel;
- }
-
- /**
- * Creates the label panel.
- *
- * @param text the text
- *
- * @return the panel
- */
- private JPanel createLabelPanel(String text) {
- JPanel panel = new JPanel();
- JLabel label = new JLabel(text);
- panel.add(label);
-
- return panel;
- }
-
- /**
- * Creates the task label.
- *
- * @param localTasks true, if the local task label has to get created.
- * false, if the global task label has to get created.
- *
- * @return the panel
- */
- private JPanel createTaskLabel(boolean localTasks) {
- JPanel panel = new JPanel(new GridBagLayout());
- panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
-
- if (localTasks)
- panel.add(createLabelPanel(prefs.getString("lang.en.timed.local")));
- else
- panel.add(createLabelPanel(prefs.getString("lang.en.timed.global")));
-
- JScrollPane scrollPane = new JScrollPane(createTaskTable(localTasks));
- panel.add(scrollPane);
-
- if (localTasks)
- localAddPanel = initAddPanel(panel, localTasks);
- else
- /*globalAddPanel = */ initAddPanel(panel, localTasks);
-
- return panel;
- }
-
- /**
- * Creates the task table.
- *
- * @param localTasks true, if the local task label has to get created.
- * false, if the global task label has to get created.
- *
- * @return the table
- */
- private JTable createTaskTable(boolean localTasks) {
- VSInternalProcess process = getSelectedProcess();
- VSTaskManagerTableModel model =
- new VSTaskManagerTableModel(process, localTasks);
- VSTaskManagerCellEditor cellEditor =
- new VSTaskManagerCellEditor(model);
-
- if (localTasks) {
- taskManagerLocalModel = model;
- taskManagerLocalEditor = cellEditor;
- } else {
- taskManagerGlobalModel = model;
- taskManagerGlobalEditor = cellEditor;
- }
-
- JTable table = new JTable(model);
- table.setDefaultEditor(Object.class, cellEditor);
- model.setTable(table);
-
- table.addMouseListener(model);
-
- TableColumn col = table.getColumnModel().getColumn(0);
- col.setMaxWidth(62);
- col.setResizable(false);
-
- col = table.getColumnModel().getColumn(1);
- col.setMaxWidth(40);
- col.setResizable(false);
-
- col = table.getColumnModel().getColumn(2);
- col.sizeWidthToFit();
- table.setBackground(Color.WHITE);
-
- return table;
- }
-
- /**
- * Inits the add panel.
- *
- * @param panel the panel
- * @param localTasks true, if the local task label has to get created.
- * false, if the global task label has to get created.
- *
- * @return the panel
- */
- private JPanel initAddPanel(JPanel panel, final boolean localTasks) {
- JPanel addPanel = new JPanel();
- addPanel.setLayout(new BoxLayout(addPanel, BoxLayout.X_AXIS));
- boolean expertMode = prefs.getBoolean("sim.mode.expert");
-
- final JTextField textField = new JTextField();
- if (localTasks)
- localTextField = textField;
- else
- globalTextField = textField;
-
- textField.setText("0000");
- textField.setBackground(Color.WHITE);
- addPanel.add(textField);
-
- addPanel.add(new JLabel(" ms "));
-
- if (localTasks) {
- if (expertMode)
- addPanel.add(localPIDComboBox);
- } else {
- addPanel.add(globalPIDComboBox);
- }
-
- final JComboBox comboBox = new JComboBox();
- JButton takeoverButton = new JButton(prefs.getString("lang.en.takeover"));
- takeoverButton.setMnemonic(prefs.getInteger("keyevent.takeover"));
- takeoverButton.addActionListener(new ActionListener() {
- private boolean isRed;
- public void actionPerformed(ActionEvent ae) {
- String textValue = textField.getText();
- Long longValue = null;
-
- try {
- longValue = Long.valueOf(textValue);
-
- if (longValue.longValue() < 0) {
- makeRed();
- return;
- }
-
- if (isRed) {
- makeWhite();
- }
-
- } catch (NumberFormatException e) {
- makeRed();
- }
-
- if (longValue == null)
- return;
-
- if (takeover(longValue.longValue())) {
- if (isRed)
- makeWhite();
-
- } else {
- makeRed();
- }
- }
-
- private void makeWhite() {
- textField.setBackground(Color.WHITE);
- isRed = false;
- }
-
- private void makeRed() {
- textField.setBackground(Color.RED);
- isRed = true;
- }
-
- private boolean takeover(long time) {
- VSInternalProcess selectedProcess = getSelectedProcess();
- int index = comboBox.getSelectedIndex();
- VSCreateTask createTask = createTasks.get(index);
-
- if (createTask.isDummy())
- return false;
-
- ArrayList<VSInternalProcess> processes =
- getConcernedProcesses(localTasks);
-
- for (VSInternalProcess process : processes) {
- VSTask task = createTask.createTask(process, time,
- localTasks);
- taskManager.addTask(task, VSTaskManager.PROGRAMMED);
-
- if (selectedProcess == null ||
- process.equals(selectedProcess)) {
- if (localTasks)
- taskManagerLocalModel.addTask(task);
- else
- taskManagerGlobalModel.addTask(task);
- }
- }
-
- return true;
- }
- });
-
- addPanel.add(takeoverButton);
-
- boolean createTaskFlag = createTasks == null;
- if (createTaskFlag) createTasks = new ArrayList<VSCreateTask>();
-
- Vector<String> eventClassnames =
- VSRegisteredEvents.getNonProtocolClassnames();
-
- comboBox.setMaximumRowCount(20);
- String menuText = prefs.getString("lang.en.events.process");
- comboBox.addItem("----- " + menuText + " -----");
-
- if (createTaskFlag)
- createTasks.add(new VSCreateTask(menuText));
-
- for (String eventClassname : eventClassnames) {
- String eventShortname =
- VSRegisteredEvents.getShortnameByClassname(eventClassname);
- menuText = eventShortname;
- comboBox.addItem(menuText);
- if (createTaskFlag)
- createTasks.add(new VSCreateTask(menuText, eventClassname));
- }
-
- String activate = prefs.getString("lang.en.activate");
- String client = prefs.getString("lang.en.client");
- String clientRequest = prefs.getString("lang.en.clientrequest.start");
- String deactivate = prefs.getString("lang.en.deactivate");
- String server = prefs.getString("lang.en.server");
- String serverRequest = prefs.getString("lang.en.serverrequest.start");
- String protocol = prefs.getString("lang.en.protocol");
-
- String protocolEventClassname = "events.internal.VSProtocolEvent";
- eventClassnames = VSRegisteredEvents.getProtocolClassnames();
-
- for (String eventClassname : eventClassnames) {
- String eventShortname_ =
- VSRegisteredEvents.getShortnameByClassname(eventClassname);
- String eventShortname = null;
-
- menuText = eventShortname_ + " " + protocol;
- comboBox.addItem("----- " + menuText + " -----");
-
- if (createTaskFlag)
- createTasks.add(new VSCreateTask(menuText));
-
- if (VSRegisteredEvents.isOnServerStartProtocol(eventClassname))
- eventShortname = eventShortname_ + " " + serverRequest;
- else
- eventShortname = eventShortname_ + " " + clientRequest;
-
- menuText = eventShortname;
- comboBox.addItem(menuText);
- if (createTaskFlag) {
- VSCreateTask createTask = new VSCreateTask(menuText,
- eventClassname);
- createTask.setShortname(eventShortname);
- createTask.isRequest(true);
- createTasks.add(createTask);
- }
-
- eventShortname = eventShortname_ + " " + client + " " + activate;
- menuText = eventShortname;
- comboBox.addItem(menuText);
- if (createTaskFlag) {
- VSCreateTask createTask =
- new VSCreateTask(menuText, protocolEventClassname);
- createTask.isProtocolActivation(true);
- createTask.isClientProtocol(true);
- createTask.setProtocolClassname(eventClassname);
- createTask.setShortname(eventShortname);
- createTasks.add(createTask);
- }
-
- eventShortname = eventShortname_ + " " + client + " " + deactivate;
- menuText = eventShortname;
- comboBox.addItem(menuText);
- if (createTaskFlag) {
- VSCreateTask createTask =
- new VSCreateTask(menuText, protocolEventClassname);
- createTask.isProtocolDeactivation(true);
- createTask.isClientProtocol(true);
- createTask.setProtocolClassname(eventClassname);
- createTask.setShortname(eventShortname);
- createTasks.add(createTask);
- }
-
- eventShortname = eventShortname_ + " " + server + " " + activate;
- menuText = eventShortname;
- comboBox.addItem(menuText);
- if (createTaskFlag) {
- VSCreateTask createTask =
- new VSCreateTask(menuText, protocolEventClassname);
- createTask.isProtocolActivation(true);
- createTask.isClientProtocol(false);
- createTask.setProtocolClassname(eventClassname);
- createTask.setShortname(eventShortname);
- createTasks.add(createTask);
- }
-
- eventShortname = eventShortname_ + " " + server + " " + deactivate;
- menuText = eventShortname;
- comboBox.addItem(menuText);
- if (createTaskFlag) {
- VSCreateTask createTask =
- new VSCreateTask(menuText, protocolEventClassname);
- createTask.isProtocolDeactivation(true);
- createTask.isClientProtocol(false);
- createTask.setProtocolClassname(eventClassname);
- createTask.setShortname(eventShortname);
- createTasks.add(createTask);
- }
- }
-
- panel.add(comboBox);
- panel.add(addPanel);
-
- return addPanel;
- }
-
- /**
- * Gets the split size.
- *
- * @return the split size
- */
- public synchronized int getSplitSize() {
- return splitPaneH.getDividerLocation();
- }
-
- /**
- * Gets the paint size.
- *
- * @return the paint size
- */
- public synchronized int getPaintSize() {
- return splitPaneV.getDividerLocation();
- }
-
- /**
- * Gets the selected process num.
- *
- * @return the selected process num
- */
- private int getSelectedProcessNum() {
- return processesComboBox.getSelectedIndex();
- }
-
- /**
- * Checks if 'all processes' is selected
- *
- * @return True, if 'all processes' are selected, else false
- */
- private boolean allProcessesAreSelected() {
- return processesComboBox.getSelectedIndex() + 1
- == processesComboBox.getItemCount();
- }
-
- /**
- * Gets the selected process.
- *
- * @return the selected process
- */
- private VSInternalProcess getSelectedProcess() {
- int processNum = getSelectedProcessNum();
- return simulatorVisualization.getProcess(processNum);
- }
-
- /**
- * Gets the concerned processes.
- *
- * @param localTasks true, if this table manages the local tasks. false
- * if this table manages the global tasks.
- *
- * @return the concerned processes
- */
- private ArrayList<VSInternalProcess> getConcernedProcesses(
- boolean localTasks) {
- int processNum = localTasks
- ? localPIDComboBox.getSelectedIndex()
- : globalPIDComboBox.getSelectedIndex();
-
- if (processNum == simulatorVisualization.getNumProcesses())
- return simulatorVisualization.getProcessesArray();
-
- ArrayList<VSInternalProcess> arr = new ArrayList<VSInternalProcess>();
- arr.add(simulatorVisualization.getProcess(processNum));
-
- return arr;
- }
-
- /**
- * Update task manager table.
- */
- public synchronized void updateTaskManagerTable() {
- VSInternalProcess process = getSelectedProcess();
- boolean allProcesses = process == null;
-
- taskManagerLocalEditor.stopEditing();
- taskManagerGlobalEditor.stopEditing();
-
- taskManagerLocalModel.set(process,
- VSTaskManagerTableModel.LOCAL,
- allProcesses);
-
- taskManagerGlobalModel.set(process,
- VSTaskManagerTableModel.GLOBAL,
- allProcesses);
- }
-
- /**
- * Update the processes combo box
- */
- private void updateProcessesComboBox() {
- int numProcesses = simulatorVisualization.getNumProcesses();
- String processString = prefs.getString("lang.en.process");
-
- for (int i = 0; i < numProcesses; ++i) {
- int processID = simulatorVisualization.getProcess(i).getProcessID();
-
- processesComboBox.removeItemAt(i);
- localPIDComboBox.removeItemAt(i);
- globalPIDComboBox.removeItemAt(i);
-
- processesComboBox.insertItemAt(processString + " " + processID, i);
- localPIDComboBox.insertItemAt("PID: " + processID, i);
- globalPIDComboBox.insertItemAt("PID: " + processID, i);
- }
- }
-
- /**
- * The simulator has finished.
- */
- public synchronized void finish() {
- menuItemStates.setStart(false);
- menuItemStates.setPause(false);
- menuItemStates.setReset(true);
- menuItemStates.setReplay(true);
- simulatorFrame.updateSimulatorMenu();
- }
-
- /**
- * Gets the simulator num.
- *
- * @return the simulator num
- */
- public synchronized int getSimulatorNum() {
- return simulatorNum;
- }
-
- /**
- * Gets the menu item states.
- *
- * @return the menu item states
- */
- public synchronized VSMenuItemStates getMenuItemStates() {
- return menuItemStates;
- }
-
- /**
- * Gets the simulator canvas.
- *
- * @return the simulator canvas
- */
- public synchronized VSSimulatorVisualization getSimulatorCanvas() {
- return simulatorVisualization;
- }
-
- /**
- * Gets the simulator frame.
- *
- * @return the simulator frame
- */
- public synchronized VSSimulatorFrame getSimulatorFrame() {
- return simulatorFrame;
- }
-
- /**
- * Update from prefs.
- */
- public synchronized void updateFromPrefs() {
- simulatorVisualization.setBackground(prefs.getColor("col.background"));
- simulatorVisualization.updateFromPrefs();
- }
-
- /**
- * Removes the process at a specified index.
- *
- * @param index the index
- */
- public synchronized void removedAProcessAtIndex(int index) {
- if (lastSelectedProcessNum > index)
- --lastSelectedProcessNum;
-
- globalTextFields.remove(index);
- localTextFields.remove(index);
-
- globalPIDComboBox.removeItemAt(index);
- localPIDComboBox.removeItemAt(index);
-
- processesComboBox.removeItemAt(index);
- simulatorFrame.updateEditMenu();
-
- updateTaskManagerTable();
- }
-
- /**
- * Adds the process at a specified index.
- *
- * @param index the index
- */
- public synchronized void addProcessAtIndex(int index) {
- int processID = simulatorVisualization.getProcess(index).getProcessID();
- String processString = prefs.getString("lang.en.process");
-
- localTextFields.add(index, "0000");
- globalTextFields.add(index, "0000");
-
- localPIDComboBox.insertItemAt("PID: " + processID, index);
- globalPIDComboBox.insertItemAt("PID: " + processID, index);
-
- processesComboBox.insertItemAt(processString + " " + processID, index);
- simulatorFrame.updateEditMenu();
- }
-
- /**
- * Fire expert mode changed. Tell, that the expert mode has changed.
- */
- public synchronized void fireExpertModeChanged() {
- boolean expertMode = prefs.getBoolean("sim.mode.expert");
-
- /* Update the Task Manager GUI */
- int selectedIndex = tabbedPane.getSelectedIndex();
-
- if (expertMode) {
- tabbedPane.remove(localPanel);
- tabbedPane.insertTab(prefs.getString("lang.en.events"), null,
- splitPane1, null, 0);
- splitPane1.setTopComponent(localPanel);
- //splitPane1.setDividerLocation((int) (getPaintSize()/2) - 20);
-
- /* addPanel */
- localAddPanel.add(localPIDComboBox, 2);
-
- } else {
- tabbedPane.remove(splitPane1);
- tabbedPane.insertTab(prefs.getString("lang.en.events"), null,
- localPanel, null, 0);
-
- /* addPanel */
- localAddPanel.remove(2);
- }
-
- tabbedPane.setSelectedIndex(selectedIndex);
-
- /* Update the 'Variables tab' */
- if (getSelectedProcessNum() !=
- simulatorVisualization.getNumProcesses()) {
- VSInternalProcess process = getSelectedProcess();
- VSProcessEditor editor = new VSProcessEditor(prefs, process);
- tabbedPane.setComponentAt(1, editor.getContentPane());
- }
-
- /* Update the tools panel */
- logingPanel.remove(1);
- logingPanel.add(createToolsPanel(), BorderLayout.SOUTH);
- updateUI();
- }
-
- /**
- * Gets the prefs.
- *
- * @return the prefs
- */
- public synchronized VSPrefs getPrefs() {
- return prefs;
- }
-
- /**
- * Gets the create tasks objects. Those objects are for creating new tasks
- * via the task manager GUI or via right click on the paint area of the
- * simulator canvas!
- *
- * @return The create tasks objects
- */
- ArrayList<VSCreateTask> getCreateTaskObjects() {
- return createTasks;
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- simulatorVisualization.serialize(serialize, objectOutputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSSimulator");
-
- serialize.setObject("simulator", this);
- serialize.setObject("loging", loging);
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- simulatorVisualization.deserialize(serialize, objectInputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- updateFromPrefs();
- updateTaskManagerTable();
- updateProcessesComboBox();
- processesComboBox.setSelectedIndex(processesComboBox.getItemCount()-1);
- }
-}
diff --git a/sources/simulator/VSSimulatorFrame.java b/sources/simulator/VSSimulatorFrame.java
deleted file mode 100644
index f8396eb..0000000
--- a/sources/simulator/VSSimulatorFrame.java
+++ /dev/null
@@ -1,632 +0,0 @@
-/* * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package simulator;
-
-import java.awt.*;
-import java.awt.event.*;
-//import java.io.*;
-import java.util.*;
-import javax.swing.*;
-import javax.swing.event.*;
-
-import core.*;
-import prefs.*;
-import prefs.editors.*;
-import serialize.*;
-import utils.*;
-
-/**
- * The class VSSimulatorFrame, an object of this class represents a window
- * of the simulator. The window can have several tabs. Each tab contains
- * an independent simulator.
- *
- * @author Paul C. Buetow
- */
-public class VSSimulatorFrame extends VSFrame {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The pause item. */
- private JMenuItem pauseItem;
-
- /** The replay item. */
- private JMenuItem replayItem;
-
- /** The reset item. */
- private JMenuItem resetItem;
-
- /** The start item. */
- private JMenuItem startItem;
-
- /** The pause button. */
- private JButton pauseButton;
-
- /** The replay button. */
- private JButton replayButton;
-
- /** The reset button. */
- private JButton resetButton;
-
- /** The start button. */
- private JButton startButton;
-
- /** The menu edit. */
- private JMenu menuEdit;
-
- /** The menu file. */
- private JMenu menuFile;
-
- /** The close item. */
- private JMenuItem closeItem;
-
- /** The save item. */
- private JMenuItem saveItem;
-
- /** The save as item. */
- private JMenuItem saveAsItem;
-
- /** The menu simulator. */
- private JMenu menuSimulator;
-
- /** The tool bar. */
- private JToolBar toolBar;
-
- /** The prefs. */
- private VSPrefs prefs;
-
- /** The simulators. */
- private Vector<VSSimulator> simulators;
-
- /** The current simulator. */
- private VSSimulator currentSimulator;
-
- /** The tabbed pane. */
- private JTabbedPane tabbedPane;
-
- /** The action listener */
- private ActionListener actionListener;
-
- /**
- * Instantiates a new VSSimulatorFrame object.
- *
- * @param prefs the prefs
- * @param relativeTo the component to open the window relative to
- */
- public VSSimulatorFrame(VSPrefs prefs, Component relativeTo) {
- super(prefs.getString("lang.en.name"), relativeTo);
- this.prefs = prefs;
- this.simulators = new Vector<VSSimulator>();
-
- final VSPrefs finalPrefs = this.prefs;
- actionListener = new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- Object source = e.getSource();
- String sourceText = null;
-
- if (source instanceof JMenuItem)
- sourceText = ((JMenuItem) source).getText();
- else
- sourceText = ((ImageIcon) ((JButton) source).getIcon()).
- getDescription();
-
- if (sourceText.equals(
- finalPrefs.getString("lang.en.simulator.close"))) {
- removeCurrentSimulator();
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.simulator.new"))) {
- VSPrefs newPrefs = VSDefaultPrefs.init();
- VSSimulatorEditor simulatorEditor =
- new VSSimulatorEditor(newPrefs, VSSimulatorFrame.this,
- VSSimulatorEditor.OPENED_NEW_TAB);
- new VSEditorFrame(newPrefs, VSSimulatorFrame.this,
- simulatorEditor);
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.window.new"))) {
- new VSMain(VSDefaultPrefs.init(),
- VSSimulatorFrame.this);
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.window.close"))) {
- dispose();
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.open"))) {
- VSSerialize serialize = new VSSerialize();
- serialize.openSimulator(VSSimulatorFrame.this);
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.save"))) {
- VSSimulatorVisualization simulatorVisualization =
- currentSimulator.getSimulatorCanvas();
- boolean flag = !simulatorVisualization.isPaused()
- && !simulatorVisualization.isResetted()
- && !simulatorVisualization.hasFinished();
-
- if (flag)
- pauseCurrentSimulator();
-
- VSSerialize serialize = new VSSerialize();
- serialize.saveSimulator(VSSerialize.LAST_FILENAME,
- currentSimulator);
- if (flag)
- startCurrentSimulator();
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.saveas"))) {
- VSSimulatorVisualization simulatorVisualization =
- currentSimulator.getSimulatorCanvas();
- boolean flag = !simulatorVisualization.isPaused()
- && !simulatorVisualization.isResetted()
- && !simulatorVisualization.hasFinished();
- if (flag)
- pauseCurrentSimulator();
-
- VSSerialize serialize = new VSSerialize();
- serialize.saveSimulator(currentSimulator);
-
- if (flag)
- startCurrentSimulator();
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.about"))) {
- new VSAboutFrame(finalPrefs, VSSimulatorFrame.this);
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.quit"))) {
- System.exit(0);
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.start"))) {
- startCurrentSimulator();
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.pause"))) {
- pauseCurrentSimulator();
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.reset"))) {
- resetCurrentSimulator();
-
- } else if (sourceText.equals(
- finalPrefs.getString("lang.en.replay"))) {
- VSMenuItemStates menuItemState =
- currentSimulator.getMenuItemStates();
- menuItemState.setStart(false);
- menuItemState.setPause(true);
- menuItemState.setReset(false);
- menuItemState.setReplay(true);
- currentSimulator.getSimulatorCanvas().reset();
- currentSimulator.getSimulatorCanvas().play();
- updateSimulatorMenu();
- }
- }
- };
-
- setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
-
- setSize(prefs.getInteger("div.window.xsize"),
- prefs.getInteger("div.window.ysize"));
-
- setJMenuBar(createMenuBar());
- setLayout(new BorderLayout());
- setContentPane(createContentPane());
- setVisible(true);
-
- pauseButton.setEnabled(false);
- replayButton.setEnabled(false);
- resetButton.setEnabled(false);
- startButton.setEnabled(false);
- menuEdit.setEnabled(false);
- //menuFile.setEnabled(false);
- closeItem.setEnabled(false);
- saveItem.setEnabled(false);
- saveAsItem.setEnabled(false);
- menuSimulator.setEnabled(false);
- }
-
- /**
- * Creates the menu bar.
- *
- * @return the j menu bar
- */
- private JMenuBar createMenuBar() {
- /* File menu */
- menuFile = new JMenu(prefs.getString("lang.en.file"));
- menuFile.setMnemonic(prefs.getInteger("keyevent.file"));
- JMenuItem menuItem;
-
- menuItem = new JMenuItem(prefs.getString("lang.en.simulator.new"));
- menuItem.setAccelerator(KeyStroke.getKeyStroke(
- prefs.getInteger("keyevent.new"),
- ActionEvent.ALT_MASK));
- menuItem.addActionListener(actionListener);
- menuFile.add(menuItem);
-
- closeItem = new JMenuItem(
- prefs.getString("lang.en.simulator.close"));
- closeItem.setAccelerator(KeyStroke.getKeyStroke(
- prefs.getInteger("keyevent.close"),
- ActionEvent.ALT_MASK));
- closeItem.addActionListener(actionListener);
- menuFile.add(closeItem);
-
- menuFile.addSeparator();
-
- menuItem = new JMenuItem(prefs.getString("lang.en.window.new"));
- menuItem.addActionListener(actionListener);
- menuFile.add(menuItem);
-
- menuItem = new JMenuItem(prefs.getString("lang.en.window.close"));
- menuItem.addActionListener(actionListener);
- menuFile.add(menuItem);
-
- menuFile.addSeparator();
-
- menuItem = new JMenuItem(prefs.getString("lang.en.open"));
- menuItem.setAccelerator(KeyStroke.getKeyStroke(
- prefs.getInteger("keyevent.open"),
- ActionEvent.ALT_MASK));
- menuItem.addActionListener(actionListener);
- menuFile.add(menuItem);
-
- saveItem = new JMenuItem(prefs.getString("lang.en.save"));
- saveItem.setAccelerator(KeyStroke.getKeyStroke(
- prefs.getInteger("keyevent.save"),
- ActionEvent.ALT_MASK));
- saveItem.addActionListener(actionListener);
- menuFile.add(saveItem);
-
- saveAsItem = new JMenuItem(prefs.getString("lang.en.saveas"));
- saveAsItem.setAccelerator(KeyStroke.getKeyStroke(
- prefs.getInteger("keyevent.saveas"),
- ActionEvent.ALT_MASK));
- saveAsItem.addActionListener(actionListener);
- menuFile.add(saveAsItem);
-
- menuFile.addSeparator();
-
- menuItem = new JMenuItem(prefs.getString("lang.en.about"));
- menuItem.addActionListener(actionListener);
- menuFile.add(menuItem);
-
- menuItem = new JMenuItem(prefs.getString("lang.en.quit"));
- menuItem.addActionListener(actionListener);
- menuFile.add(menuItem);
-
- /* Edit menu */
- menuEdit = new JMenu(
- prefs.getString("lang.en.edit"));
- menuEdit.setMnemonic(prefs.getInteger("keyevent.edit"));
- updateEditMenu();
-
- /* Simulator menu */
- toolBar = new JToolBar();
- menuSimulator = new JMenu(
- prefs.getString("lang.en.simulator"));
- menuSimulator.setMnemonic(prefs.getInteger("keyevent.simulator"));
-
- resetItem = new JMenuItem(prefs.getString("lang.en.reset"));
- resetItem.setAccelerator(KeyStroke.getKeyStroke(
- prefs.getInteger("keyevent.reset"),
- ActionEvent.ALT_MASK));
- resetItem.addActionListener(actionListener);
- resetItem.setEnabled(false);
- menuSimulator.add(resetItem);
- resetButton = new JButton(getImageIcon("reset.png",
- prefs.getString("lang.en.reset")));
- resetButton.addActionListener(actionListener);
- toolBar.add(resetButton);
-
- replayItem = new JMenuItem(
- prefs.getString("lang.en.replay"));
- replayItem.setAccelerator(KeyStroke.getKeyStroke(
- prefs.getInteger("keyevent.replay"),
- ActionEvent.ALT_MASK));
- replayItem.addActionListener(actionListener);
- replayItem.setEnabled(false);
- menuSimulator.add(replayItem);
- replayButton = new JButton(
- getImageIcon("replay.png", prefs.getString("lang.en.replay")));
- replayButton.addActionListener(actionListener);
- toolBar.add(replayButton);
-
- pauseItem = new JMenuItem(prefs.getString("lang.en.pause"));
- pauseItem.setAccelerator(KeyStroke.getKeyStroke(
- prefs.getInteger("keyevent.pause"),
- ActionEvent.ALT_MASK));
- pauseItem.addActionListener(actionListener);
- menuSimulator.add(pauseItem);
- pauseItem.setEnabled(false);
- pauseButton = new JButton(getImageIcon("pause.png",
- prefs.getString("lang.en.pause")));
- pauseButton.addActionListener(actionListener);
- toolBar.add(pauseButton);
-
- startItem = new JMenuItem(prefs.getString("lang.en.start"));
- startItem.setAccelerator(KeyStroke.getKeyStroke(
- prefs.getInteger("keyevent.start"),
- ActionEvent.ALT_MASK));
- startItem.addActionListener(actionListener);
- menuSimulator.add(startItem);
- startButton = new JButton(getImageIcon("start.png",
- prefs.getString("lang.en.start")));
- startButton.addActionListener(actionListener);
- toolBar.add(startButton);
-
-
- JMenuBar mainMenuBar = new JMenuBar();
- mainMenuBar.add(menuFile);
- mainMenuBar.add(menuEdit);
- mainMenuBar.add(menuSimulator);
-
- return mainMenuBar;
- }
-
- /**
- * Creates the content pane.
- *
- * @return the container
- */
- private Container createContentPane() {
- Container pane = getContentPane();
- tabbedPane = new JTabbedPane(JTabbedPane.BOTTOM,
- JTabbedPane.SCROLL_TAB_LAYOUT);
-
- tabbedPane.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- JTabbedPane pane = (JTabbedPane) ce.getSource();
- currentSimulator = (VSSimulator) pane.getSelectedComponent();
- if (currentSimulator != null) {
- currentSimulator.getSimulatorCanvas().paint();
- updateEditMenu();
- updateSimulatorMenu();
- }
- }
- });
-
- pane.add(toolBar, BorderLayout.PAGE_START);
- pane.add(tabbedPane, BorderLayout.CENTER);
-
- return pane;
- }
-
- /**
- * Updates the edit menu. Called if another simulator tab has been selected
- * or if processes have been added or removed.
- */
- public void updateEditMenu() {
- menuEdit.removeAll();
-
- JMenuItem globalPrefsItem = new JMenuItem(
- prefs.getString("lang.en.prefs"));
-
- globalPrefsItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- VSPrefs simulatorPrefs = currentSimulator.getPrefs();
- VSSimulatorEditor.TAKEOVER_BUTTON = true;
- VSSimulatorEditor simulatorEditor = new VSSimulatorEditor(
- simulatorPrefs, VSSimulatorFrame.this, currentSimulator);
- new VSEditorFrame(prefs, VSSimulatorFrame.this,
- simulatorEditor);
- }
- });
-
- menuEdit.add(globalPrefsItem);
- menuEdit.addSeparator();
-
- if (currentSimulator == null)
- return;
-
- String processString = prefs.getString("lang.en.process");
- ArrayList<VSInternalProcess> arr =
- currentSimulator.getSimulatorCanvas().getProcessesArray();
-
- //int numProcesses = arr.size();
- int processNum = 0;
-
- for (VSInternalProcess process : arr) {
- int processID = process.getProcessID();
- JMenuItem processItem = new JMenuItem(processString + " " +
- processID);
- if (processNum < 9)
- processItem.setAccelerator(
- KeyStroke.getKeyStroke(0x31+processNum,
- ActionEvent.ALT_MASK));
- final int finalProcessNum = processNum++;
- processItem.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- currentSimulator.getSimulatorCanvas().editProcess(
- finalProcessNum);
- }
- });
- menuEdit.add(processItem);
- }
- }
-
- /**
- * Updates the simulator menu. Called if the simulator state has changed
- * (e.g. start/play/stop/replay etc)
- */
- public synchronized void updateSimulatorMenu() {
- VSMenuItemStates menuItemState = currentSimulator.getMenuItemStates();
-
- pauseItem.setEnabled(menuItemState.getPause());
- replayItem.setEnabled(menuItemState.getReplay());
- resetItem.setEnabled(menuItemState.getReset());
- startItem.setEnabled(menuItemState.getStart());
-
- pauseButton.setEnabled(menuItemState.getPause());
- replayButton.setEnabled(menuItemState.getReplay());
- resetButton.setEnabled(menuItemState.getReset());
- startButton.setEnabled(menuItemState.getStart());
- }
-
- /* (non-Javadoc)
- * @see java.awt.Window#dispose()
- */
- public void dispose() {
- synchronized (simulators) {
- for (VSSimulator simulator : simulators)
- simulator.getSimulatorCanvas().stopThread();
- }
- super.dispose();
- }
-
- /**
- * Adds the simulator.
- *
- * @param simulator the simulator
- */
- public void addSimulator(VSSimulator simulator) {
- simulator.setLayout(new GridLayout(1, 1, 3, 3));
- simulator.setMinimumSize(new Dimension(0, 0));
- simulator.setMaximumSize(new Dimension(0, 0));
-
- simulators.add(simulator);
- tabbedPane.addTab(prefs.getString("lang.en.simulator")
- + " " + simulator.getSimulatorNum(), simulator);
- tabbedPane.setSelectedComponent(simulator);
-
- if (simulators.size() == 1) {
- menuEdit.setEnabled(true);
- //menuFile.setEnabled(true);
- closeItem.setEnabled(true);
- saveItem.setEnabled(true);
- saveAsItem.setEnabled(true);
- menuSimulator.setEnabled(true);
- }
- }
-
- /**
- * Removes the simulator.
- *
- * @param simulatorToRemove the simulator to remove
- */
- public void removeSimulator(VSSimulator simulatorToRemove) {
- if (simulators.size() == 1) {
- pauseButton.setEnabled(false);
- replayButton.setEnabled(false);
- resetButton.setEnabled(false);
- startButton.setEnabled(false);
- menuEdit.setEnabled(false);
- //menuFile.setEnabled(false);
- closeItem.setEnabled(false);
- saveItem.setEnabled(false);
- saveAsItem.setEnabled(false);
- menuSimulator.setEnabled(false);
- }
-
- simulators.remove(simulatorToRemove);
- tabbedPane.remove(simulatorToRemove);
- simulatorToRemove.getSimulatorCanvas().stopThread();
- }
-
- /**
- * Removes the current simulator.
- */
- private void removeCurrentSimulator() {
- removeSimulator(currentSimulator);
- }
-
- /**
- * Gets the current simulator.
- *
- * @return the current simulator
- */
- public VSSimulator getCurrentSimulator() {
- return currentSimulator;
- }
-
- /**
- * Resets the current simulator
- */
- public void resetCurrentSimulator() {
- if (currentSimulator == null)
- return;
-
- VSMenuItemStates menuItemState =
- currentSimulator.getMenuItemStates();
- menuItemState.setStart(true);
- menuItemState.setPause(false);
- menuItemState.setReset(false);
- menuItemState.setReplay(false);
- currentSimulator.getSimulatorCanvas().reset();
- updateSimulatorMenu();
- }
-
- /**
- * Starts the current simulator
- */
- public void startCurrentSimulator() {
- VSMenuItemStates menuItemState =
- currentSimulator.getMenuItemStates();
- menuItemState.setStart(false);
- menuItemState.setPause(true);
- menuItemState.setReset(false);
- menuItemState.setReplay(true);
- currentSimulator.getSimulatorCanvas().play();
- updateSimulatorMenu();
- }
-
- /**
- * Pauses the current simulator
- */
- public void pauseCurrentSimulator() {
- VSMenuItemStates menuItemState =
- currentSimulator.getMenuItemStates();
- menuItemState.setStart(true);
- menuItemState.setPause(false);
- menuItemState.setReset(true);
- menuItemState.setReplay(true);
- currentSimulator.getSimulatorCanvas().pause();
- updateSimulatorMenu();
- }
-
- /**
- * Gets the image icon.
- *
- * @param name the name
- * @param descr the descr
- *
- * @return the image icon
- */
- private ImageIcon getImageIcon(String name, String descr) {
- java.net.URL imageURL = getClass().getResource("/icons/"+name);
-
- if (imageURL == null)
- return new ImageIcon("icons/"+name, descr);
-
- return new ImageIcon(imageURL, descr);
- }
-
- /**
- * Gets the prefs.
- *
- * @return the prefs
- */
- public VSPrefs getPrefs() {
- return prefs;
- }
-}
diff --git a/sources/simulator/VSSimulatorVisualization.java b/sources/simulator/VSSimulatorVisualization.java
deleted file mode 100644
index f15d478..0000000
--- a/sources/simulator/VSSimulatorVisualization.java
+++ /dev/null
@@ -1,1821 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package simulator;
-
-import java.awt.*;
-import java.awt.event.*;
-import java.awt.image.*;
-import java.io.*;
-import java.util.*;
-import javax.swing.*;
-
-import core.*;
-import core.time.*;
-import events.*;
-import events.implementations.*;
-import events.internal.*;
-import prefs.*;
-import prefs.editors.*;
-import serialize.*;
-//import utils.*;
-
-/**
- * The class VSSimulatorVisualization. An instance of this object represents the
- * graphical paint area of a simulator. It contains all graphic calculations.
- * Also the simulator thread takes place in this class in a loop! This class
- * is probably the most cryptic of the whole simulator source code. This is
- * this way in order to gain more performance of the painting area!
- *
- * @author Paul C. Buetow
- */
-public class VSSimulatorVisualization extends Canvas
- implements Runnable, VSSerializable {
-
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The highlighted process. */
- private VSInternalProcess highlightedProcess;
-
- /** The simulator. */
- private VSSimulator simulator;
-
- /** The prefs. */
- private VSPrefs prefs;
-
- /** The loging. */
- private VSLogging loging;
-
- /** The num processes. */
- private volatile int numProcesses;
-
- /** The seconds spaceing. */
- private int secondsSpaceing;
-
- /** The thread sleep. */
- private int threadSleep;
-
- /** The until time. Until then goes the simulator? */
- private long untilTime;
-
- /** The simulator is paused. */
- private volatile boolean isPaused = true;
-
- /** The simulator thread is stopped. */
- private volatile boolean hasThreadStopped = false;
-
- /** The simulator is finished. */
- private volatile boolean hasFinished = false;
-
- /** The simulator is resetted. */
- private volatile boolean isResetted = false;
-
- /** The simulator is anti aliased. */
- private volatile boolean isAntiAliased = false;
-
- /** The simulator's anti aliasing has changed. */
- private volatile boolean isAntiAliasedChanged = false;
-
- /** The simulator shows the lamport time. */
- private volatile boolean showLamport = false;
-
- /** The simulator shows the vector time. */
- private volatile boolean showVectorTime = false;
-
- /** The pause time. */
- private volatile long pauseTime;
-
- /** The start time. */
- private volatile long startTime;
-
- /** The global time. */
- private volatile long time;
-
- /** The last global time. */
- private volatile long lastTime;
-
- /** The task manager. */
- private VSTaskManager taskManager;
-
- /** The message lines. */
- private LinkedList<VSMessageLine> messageLines;
-
- /** The message lines to remove. */
- private LinkedList<VSMessageLine> messageLinesToRemove;
-
- /** The processes. */
- private ArrayList<VSInternalProcess> processes;
-
- /** The clock speed. */
- private double clockSpeed;
-
- /** The clock offset. */
- private double clockOffset;
-
- /** The simulator time. */
- private long simulatorTime;
-
- /** The x paint size. */
- double xPaintSize;
-
- /** The paint size. */
- double paintSize;
-
- /** The y distance. */
- double yDistance;
-
- /** The global time x position. */
- double globalTimeXPosition;
-
- /** The xoffset_plus_xpaintsize. */
- int xoffset_plus_xpaintsize;
-
- /** The xpaintsize_dividedby_untiltime. */
- double xpaintsize_dividedby_untiltime;
-
- /** The paint processes offset. */
- int paintProcessesOffset;
-
- /** The paint secondlines seconds. */
- int paintSecondlinesSeconds;
-
- /** The paint secondlines line. */
- int paintSecondlinesLine[] = new int[4];
-
- /** The paint secondlines y string pos1. */
- int paintSecondlinesYStringPos1;
-
- /** The paint secondlines y string pos2. */
- int paintSecondlinesYStringPos2;
-
- /** The paint global time y position. */
- int paintGlobalTimeYPosition;
-
- /* GFX buffering */
- /** The strategy for buffering. */
- private BufferStrategy strategy;
-
- /** The graphics object to paint at. */
- private Graphics2D g;
-
- /** The Constant LINE_WIDTH. */
- private static final int LINE_WIDTH = 5;
-
- /** The Constant SEPLINE_WIDTH. */
- private static final int SEPLINE_WIDTH = 2;
-
- /** The Constant XOFFSET. */
- private static final int XOFFSET = 50;
-
- /** The Constant YOFFSET. */
- private static final int YOFFSET = 30;
-
- /** The Constant YOUTER_SPACEING. */
- private static final int YOUTER_SPACEING = 15;
-
- /** The Constant YSEPLINE_SPACEING. */
- private static final int YSEPLINE_SPACEING = 20;
-
- /** The Constant TEXT_SPACEING. */
- private static final int TEXT_SPACEING = 10;
-
- /** The Constant ROW_HEIGHT. */
- private static final int ROW_HEIGHT = 14;
-
- /* Constats, which have to get calculated once after start */
- /** The processline color. */
- private Color processlineColor;
-
- /** The process secondline color. */
- private Color processSecondlineColor;
-
- /** The process sepline color. */
- private Color processSeplineColor;
-
- /** The message arrived color. */
- private Color messageArrivedColor;
-
- /** The message sending color. */
- private Color messageSendingColor;
-
- /** The message lost color. */
- private Color messageLostColor;
-
- /** The background color. */
- private Color backgroundColor;
-
- /** The message line counter. */
- private long messageLineCounter;
-
- /** The process counter. Needed for the unique process id's. */
- private int processCounter;
-
- /**
- * The class VSMessageLine, an object of this class represents a message
- * line drawn into the painting area.
- *
- * @author Paul C. Buetow
- */
- public class VSMessageLine {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The receiver process. */
- private VSInternalProcess receiverProcess;
-
- /** The color. */
- private Color color;
-
- /** The send time. */
- private long sendTime;
-
- /** The recv time. */
- private long recvTime;
-
- /** The sender num. */
- private int senderNum;
-
- /** The receiver num. */
- private int receiverNum;
-
- /** The offset1. */
- private int offset1;
-
- /** The offset2. */
- private int offset2;
-
- /** The message has arrived. */
- private boolean isArrived;
-
- /** The message is lost. */
- private boolean isLost;
-
- /** The x1. */
- private double x1;
-
- /** The y1. */
- private double y1;
-
- /** The x2. */
- private double x2;
-
- /** The y2. */
- private double y2;
-
- /** The x. */
- private double x;
-
- /** The y. */
- private double y;
-
- /** The outage time. */
- private long outageTime;
-
- /** The z. */
- private long z;
-
- /** The message line num. */
- private long messageLineNum;
-
- /** The task. */
- private VSTask task;
-
- /**
- * Instantiates a new VSMessageLine object.
- *
- * @param receiverProcess the receiver process
- * @param sendTime the send time
- * @param recvTime the recv time
- * @param outageTime the outage time
- * @param senderNum the sender num
- * @param receiverNum the receiver num
- * @param task the task
- */
- public VSMessageLine(VSInternalProcess receiverProcess, long sendTime,
- long recvTime, long outageTime, int senderNum ,
- int receiverNum, VSTask task) {
- this.receiverProcess = receiverProcess;
- this.sendTime = sendTime;
- this.recvTime = recvTime;
- this.outageTime = outageTime;
- this.senderNum = senderNum;
- this.receiverNum = receiverNum;
- this.isArrived = false;
- this.isLost = false;
- this.messageLineNum = ++messageLineCounter;
- this.task = task;
-
- if (senderNum > receiverNum) {
- //offset1 = 1;
- offset2 = LINE_WIDTH;
- } else {
- offset1 = LINE_WIDTH - 1;
- //offset2 = 1;
- }
-
- /* Needed if the message gets lost after 0ms */
- this.x = getTimeXPosition(sendTime);
- this.y = getProcessYPosition(senderNum+1) + offset1;
-
- recalcOnChange();
- paint();
- }
-
- /**
- * Recalc on change.
- */
- public void recalcOnChange() {
- x1 = getTimeXPosition(sendTime);
- y1 = getProcessYPosition(senderNum+1) + offset1;
- x2 = getTimeXPosition(recvTime);
- y2 = getProcessYPosition(receiverNum+1) + offset2;
-
- if (isLost) {
- x = getTimeXPosition(z);
- y = y1 + ( ( (y2-y1) / (x2-x1)) * (x-x1));
- }
-
- }
-
- /**
- * Draws the message line.
- *
- * @param g the grpahics object to draw at
- * @param globalTime the global time
- */
- public void draw(final Graphics2D g, final long globalTime) {
- if (isArrived) {
- g.setColor(color);
- g.drawLine((int) x1, (int) y1, (int) x2, (int) y2);
-
- } else if (isLost) {
- g.setColor(messageLostColor);
- g.drawLine((int) x1, (int) y1, (int) x, (int) y);
-
- } else if (globalTime >= recvTime) {
- checkIfMessageIsRelevant();
- isArrived = true;
-
- if (receiverProcess.isCrashed())
- color = messageLostColor;
- else
- color = messageArrivedColor;
-
- draw(g, globalTime);
-
- } else if (outageTime >= 0 && outageTime <= globalTime) {
- checkIfMessageIsRelevant();
- isLost = true;
- draw(g, globalTime);;
-
- } else {
- z = globalTime;
- x = globalTimeXPosition;
- y = y1 + ( ( (y2-y1) / (x2-x1)) * (x-x1));
- g.setColor(messageSendingColor);
- g.drawLine((int) x1, (int) y1, (int) x, (int) y);
- }
- }
-
- /**
- * Checks if the message is relevant. If it's not relevant, then it will
- * get removed.
- */
- private void checkIfMessageIsRelevant() {
- if (prefs.getBoolean("sim.messages.relevant")) {
- VSMessageReceiveEvent event =
- (VSMessageReceiveEvent) task.getEvent();
- event.init(receiverProcess);
- if (!event.isRelevantMessage())
- removeMessageLine(this);
- }
- }
-
- /**
- * Called if a process within the simulator has been removed at a
- * specified index.
- *
- * @param index the index
- *
- * @return true, if the sender or the receiver of the message has been
- * removed from the simulator. Else false is returned.
- */
- public boolean removedAProcessAtIndex(int index) {
- if (index == receiverNum || index == senderNum)
- return true;
-
- if (index < receiverNum)
- --receiverNum;
-
- if (index < senderNum)
- --senderNum;
-
- recalcOnChange();
-
- return false;
- }
-
- /**
- * Gets the message line num.
- *
- * @return the message line num
- */
- public long getMessageLineNum() {
- return messageLineNum;
- }
-
- /**
- * Checks one line to another if they equal (have the same message line
- * id)
- *
- * @param line the line to compare against
- *
- * @return true, if they equal
- */
- public boolean equals(VSMessageLine line) {
- return messageLineNum == line.getMessageLineNum();
- }
-
- /**
- * Gets the task.
- *
- * @return the task
- */
- public VSTask getTask() {
- return task;
- }
- }
-
- /**
- * Instantiates a new VSSimulatorVisualization object.
- *
- * @param prefs the prefs
- * @param simulator the simulator
- * @param loging the loging
- */
- public VSSimulatorVisualization(VSPrefs prefs, VSSimulator simulator,
- VSLogging loging) {
- init(prefs, simulator, loging);
- }
-
- /**
- * Instantiates inits the VSSimulatorVisualization object.
- *
- * @param prefs the prefs
- * @param simulator the simulator
- * @param loging the loging
- */
- private void init(VSPrefs prefs, VSSimulator simulator,
- VSLogging loging) {
- this.prefs = prefs;
- this.simulator = simulator;
- this.loging = loging;
- this.messageLines = new LinkedList<VSMessageLine>();
- this.messageLinesToRemove = new LinkedList<VSMessageLine>();
-
- /* May be not null if called from deserialization */
- if (this.taskManager == null)
- this.taskManager = new VSTaskManager(prefs, this);
-
- /* May be not null if called from deserialization */
- if (this.processes == null) {
- this.processes = new ArrayList<VSInternalProcess>();
-
- numProcesses = prefs.getInteger("sim.process.num");
-
- for (int i = 0; i < numProcesses; ++i)
- processes.add(createProcess(i));
- }
-
- updateFromPrefs();
-
- final VSPrefs finalPrefs = prefs;
- final VSSimulator finalSimulator = simulator;
-
- addMouseListener(new MouseListener() {
- public void mouseClicked(MouseEvent me) {
- final VSInternalProcess process = getProcessAtYPos(me.getY());
-
- if (SwingUtilities.isRightMouseButton(me)) {
- ActionListener actionListener = new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- String command = ae.getActionCommand();
- if (command.equals(
- finalPrefs.getString("lang.en.process.edit"))) {
- editProcess(process);
-
- } else if (command.equals(
- finalPrefs.getString("lang.en.process.crash"))) {
- VSAbstractEvent event =
- new VSProcessCrashEvent();
-
- taskManager.addTask(new VSTask(
- process.getGlobalTime(),
- process, event,
- VSTask.GLOBAL));
-
- } else if (command.equals(
- finalPrefs.getString("lang.en.process.recover"))) {
- VSAbstractEvent event =
- new VSProcessRecoverEvent();
-
- taskManager.addTask(new VSTask(
- process.getGlobalTime(),
- process, event,
- VSTask.GLOBAL));
-
- } else if (command.equals(
- finalPrefs.getString("lang.en.process.remove"))) {
- removeProcess(process);
-
- } else if (command.equals(
- finalPrefs.getString("lang.en.process.add.new"))) {
- addProcess();
- }
- }
- };
-
- JPopupMenu popup = new JPopupMenu();
- JMenuItem item = null;
-
- if (process != null)
- item = new JMenuItem(
- finalPrefs.getString("lang.en.process.selected") +
- ": " + process.getProcessID());
- else
- item = new JMenuItem(
- finalPrefs.getString("lang.en.process.not.selected"));
-
- item.setEnabled(false);
- popup.add(item);
- popup.addSeparator();
-
- item = new JMenuItem(
- finalPrefs.getString("lang.en.process.edit"));
- if (process == null)
- item.setEnabled(false);
- else
- item.addActionListener(actionListener);
- popup.add(item);
-
- item = new JMenuItem(
- finalPrefs.getString("lang.en.process.crash"));
-
- if (process == null || process.isCrashed() || isPaused ||
- time == 0 || hasFinished)
- item.setEnabled(false);
- else
- item.addActionListener(actionListener);
- popup.add(item);
-
- item = new JMenuItem(
- finalPrefs.getString("lang.en.process.recover"));
-
- if (process == null || !process.isCrashed() || isPaused ||
- time == 0 || hasFinished)
- item.setEnabled(false);
- else
- item.addActionListener(actionListener);
- popup.add(item);
-
- item = new JMenuItem(
- finalPrefs.getString("lang.en.process.remove"));
-
- if (process == null)
- item.setEnabled(false);
- else
- item.addActionListener(actionListener);
- popup.add(item);
-
- popup.addSeparator();
-
- final long xPosTime = getXPositionTime(me.getX());
- String timeString = finalPrefs.getString(
- "lang.en.event.add.time") +
- " " + xPosTime + "ms";
-
- JMenu subMenu = new JMenu(
- finalPrefs.getString("lang.en.event.add.local")
- + " " + timeString);
-
- ArrayList<VSCreateTask> createTasks =
- finalSimulator.getCreateTaskObjects();
-
- if (process == null) {
- subMenu.setEnabled(false);
- } else {
- JMenu subSubMenu = null;
- for (final VSCreateTask createTask : createTasks) {
- if (createTask.isDummy()) {
- if (subSubMenu != null)
- subMenu.add(subSubMenu);
- subSubMenu = new JMenu(
- createTask.getMenuText());
- } else {
- item = new JMenuItem(createTask.getMenuText());
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- VSTask task =
- createTask.createTask(process,
- xPosTime,
- true);
- taskManager.addTask(
- task, VSTaskManager.PROGRAMMED);
- finalSimulator.updateTaskManagerTable();
- }
- });
- subSubMenu.add(item);
- }
- }
- }
-
- popup.add(subMenu);
-
- subMenu = new JMenu(
- finalPrefs.getString("lang.en.event.add.global")
- + " " + timeString);
- if (process == null) {
- subMenu.setEnabled(false);
- } else {
- JMenu subSubMenu = null;
- for (final VSCreateTask createTask : createTasks) {
- if (createTask.isDummy()) {
- if (subSubMenu != null)
- subMenu.add(subSubMenu);
- subSubMenu = new JMenu(
- createTask.getMenuText());
- } else {
- item = new JMenuItem(createTask.getMenuText());
- item.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- VSTask task =
- createTask.createTask(process,
- xPosTime,
- false);
- taskManager.addTask(
- task, VSTaskManager.PROGRAMMED);
- finalSimulator.updateTaskManagerTable();
- }
- });
- subSubMenu.add(item);
- }
- }
- }
-
- if (finalPrefs.getBoolean("sim.mode.expert"))
- popup.add(subMenu);
-
- popup.addSeparator();
-
- item = new JMenuItem(
- finalPrefs.getString("lang.en.process.add.new"));
-
- item.addActionListener(actionListener);
- popup.add(item);
-
-
- popup.show(me.getComponent(), me.getX(), me.getY());
-
- } else {
- editProcess(process);
- }
- }
-
- public void mouseExited(MouseEvent e) {
- if (highlightedProcess != null) {
- highlightedProcess.highlightOff();
- highlightedProcess = null;
- paint();
- }
- }
-
- public void mouseEntered(MouseEvent e) { }
-
- public void mousePressed(MouseEvent e) { }
-
- public void mouseReleased(MouseEvent e) { }
-
- });
- addMouseMotionListener(new MouseMotionListener() {
- public void mouseDragged(MouseEvent e) { }
-
- public void mouseMoved(MouseEvent e) {
- VSInternalProcess p = getProcessAtYPos(e.getY());
-
- if (p == null) {
- if (highlightedProcess != null) {
- highlightedProcess.highlightOff();
- highlightedProcess = null;
- }
-
- if (isPaused)
- paint();
-
- return;
- }
-
- if (highlightedProcess != null) {
- if (highlightedProcess.getProcessID() != p.getProcessID()) {
- highlightedProcess.highlightOff();
- highlightedProcess = p;
- p.highlightOn();
- }
- } else {
- highlightedProcess = p;
- p.highlightOn();
- }
-
- if (isPaused)
- paint();
- }
-
- });
-
- addHierarchyBoundsListener(new HierarchyBoundsListener() {
- public void ancestorMoved(HierarchyEvent e) { }
-
- public void ancestorResized(HierarchyEvent e) {
- recalcOnChange();
- }
- });
- }
-
- /**
- * This method gets called if the window border of the simulator canvas
- * has changed. This method contains very ugly code. But this has to be in
- * order to gain performance!
- */
- private void recalcOnChange() {
- synchronized (processes) {
- if (processes.size() == 0)
- return;
- }
-
- processlineColor = prefs.getColor("col.process.line");
- processSecondlineColor = prefs.getColor("col.process.secondline");
- processSeplineColor = prefs.getColor("col.process.sepline");
- messageArrivedColor = prefs.getColor("col.message.arrived");
- messageSendingColor = prefs.getColor("col.message.sending");
- messageLostColor = prefs.getColor("col.message.lost");
- backgroundColor = prefs.getColor("col.background");
-
- paintSize = simulator.getPaintSize();
- xPaintSize = simulator.getWidth() -
- (3 * XOFFSET + simulator.getSplitSize());
- yDistance = (simulator.getPaintSize() -
- 2 * (YOFFSET + YOUTER_SPACEING))/ numProcesses;
- xpaintsize_dividedby_untiltime = xPaintSize / (double) untilTime;
-
-
- synchronized (messageLines) {
- for (VSMessageLine messageLine : messageLines)
- messageLine.recalcOnChange();
- }
-
- /* paintProcesses optimization, precalc things */
- {
- xoffset_plus_xpaintsize = XOFFSET + (int) xPaintSize;
- if (numProcesses > 1)
- paintProcessesOffset =
- (int) ((paintSize-2* (YOFFSET+
- YOUTER_SPACEING+YSEPLINE_SPACEING))/
- (numProcesses-1));
- else
- paintProcessesOffset =
- (int) ((paintSize-2*(YOFFSET+
- YOUTER_SPACEING+YSEPLINE_SPACEING)));
- }
-
- /* paintSecondlines optimization, precalc things */
- {
- int yMax = YOFFSET + YOUTER_SPACEING +
- (int) (numProcesses * yDistance);
- paintSecondlinesSeconds = (int) untilTime / 1000;
- paintSecondlinesLine[1] = YOFFSET;
- paintSecondlinesLine[3] = yMax;
- paintSecondlinesYStringPos1 = paintSecondlinesLine[1] - 5;
- paintSecondlinesYStringPos2 = paintSecondlinesLine[3] + 15;
- }
-
- /* paitnGlobalTime optimization, precalc things */
- {
- paintGlobalTimeYPosition = YOFFSET + YOUTER_SPACEING +
- (int) (numProcesses * yDistance);
- }
-
- if (strategy != null) {
- synchronized (strategy) {
- g = (Graphics2D) strategy.getDrawGraphics();
- g.setColor(backgroundColor);
- if (isAntiAliased)
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- }
- }
- }
-
- /**
- * Updates the simulator.
- *
- * @param globalTime the global time
- * @param lastGlobalTime the last global time
- */
- private void updateSimulator(long globalTime, long lastGlobalTime) {
- if (isPaused || hasFinished)
- return;
-
- long lastSimulatorTime = simulatorTime;
- long offset = globalTime - lastGlobalTime;
-
- clockOffset += offset * clockSpeed;
-
- while (clockOffset >= 1) {
- --clockOffset;
- ++simulatorTime;
- }
-
- if (simulatorTime > untilTime)
- simulatorTime = untilTime;
-
- offset = simulatorTime - lastSimulatorTime;
-
- for (long l = 0; l < offset; ++l)
- taskManager.runTasks(l, offset, lastSimulatorTime);
-
- synchronized (processes) {
- for (VSInternalProcess process : processes)
- process.syncTime(simulatorTime);
- }
- }
-
- /**
- * Paints the simulator.
- */
- public void paint() {
- while (getBufferStrategy() == null) {
- createBufferStrategy(3);
- strategy = getBufferStrategy();
-
- if (strategy != null) {
- g = (Graphics2D) strategy.getDrawGraphics();
- g.setColor(backgroundColor);
- }
- }
-
- synchronized (strategy) {
- if (isAntiAliasedChanged) {
- if (isAntiAliased)
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- else
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_OFF);
- isAntiAliasedChanged = false;
- }
-
- g.fillRect(0, 0, getWidth(), getHeight());
- long globalTime = simulatorTime;
-
- globalTimeXPosition = getTimeXPosition(globalTime);
- paintSecondlines(g);
- paintProcesses(g, globalTime);
- paintGlobalTime(g, globalTime);
-
- synchronized (messageLines) {
- synchronized (messageLinesToRemove) {
- if (messageLinesToRemove.size() > 0) {
- for (VSMessageLine removeThis : messageLinesToRemove)
- messageLines.remove(removeThis);
- messageLinesToRemove.clear();
- }
- }
-
- for (VSMessageLine line : messageLines)
- line.draw(g, globalTime);
- }
-
- g.setColor(backgroundColor);
- strategy.show();
- }
- }
-
- /**
- * Paints the processes.
- *
- * @param g the graphics object
- * @param globalTime the global time
- */
- private void paintProcesses(Graphics2D g, long globalTime) {
- /* First paint the horizontal process timelines
- * Second paint the processes
- */
- final int yOffset = YOFFSET + YOUTER_SPACEING + YSEPLINE_SPACEING;
- final int xPoints[] = { XOFFSET, xoffset_plus_xpaintsize,
- xoffset_plus_xpaintsize, XOFFSET, XOFFSET
- };
- final int yPoints[] = { yOffset, yOffset, yOffset + LINE_WIDTH,
- yOffset + LINE_WIDTH, yOffset
- };
-
- synchronized (processes) {
- for (VSInternalProcess process : processes) {
- final long localTime = process.getTime();
-
- g.setColor(process.getColor());
- g.fillPolygon(xPoints, yPoints, 5);
-
- if (process.hasCrashed()) {
- g.setColor(process.getCrashedColor());
- final Long crashHistory[] = process.getCrashHistoryArray();
- final int length = crashHistory.length;
-
- for (int i = 0; i < length; i += 2) {
- final int crashStartPos =
- (int) getTimeXPosition(
- crashHistory[i].longValue());
- int crashEndPos;
-
- if (i == length - 1)
- crashEndPos = xoffset_plus_xpaintsize;
- else
- crashEndPos = (int) getTimeXPosition(
- crashHistory[i+1].longValue());
-
- final int xPointsCrashed[] = {
- crashStartPos, crashEndPos,
- crashEndPos, crashStartPos, crashStartPos
- };
- g.fillPolygon(xPointsCrashed, yPoints, 5);
- }
- }
-
- g.setColor(process.getColor());
- g.drawString("P" + process.getProcessID() + ":", XOFFSET - 30,
- yPoints[0] + LINE_WIDTH);
-
- final long tmp = localTime > untilTime ? untilTime : localTime;
- final int xPos = 1 + (int) getTimeXPosition(tmp);
- final int yStart = yPoints[0] - 14;
- final int yEnd = yPoints[0];
-
- g.setColor(processlineColor);
- g.drawLine(xPos, yStart, xPos, yEnd);
- g.drawString(localTime+"ms", xPos + 2, yStart + TEXT_SPACEING);
-
- if (showLamport)
- paintTime(g, process.getLamportTimeArray(), process,
- yStart, 25);
- else if (showVectorTime)
- paintTime(g, process.getVectorTimeArray(), process,
- yStart, 20 * numProcesses);
-
- for (int i = 0; i < 5; ++i)
- yPoints[i] += paintProcessesOffset;
- }
- }
- }
-
- /**
- * Paints the time. (e.g. lamport time or vector time)
- *
- * @param g the graphics object
- * @param times the times
- * @param process the process
- * @param yStart the y start
- * @param distance the distance
- */
- private void paintTime(final Graphics2D g, final VSTime times[],
- final VSInternalProcess process, final int yStart,
- final int distance) {
-
- final int lastPos[] = { -1, -1, -1, -1 };
-
- for (VSTime time : times) {
- int xPos = (int) getTimeXPosition(time.getGlobalTime());
- int bestRow[] = { -1, -1 };
-
- for (int i = 0; i < 4; ++i) {
- if (lastPos[i] != -1) {
- int diff = xPos - lastPos[i];
- if (diff > distance) {
- bestRow[0] = i;
- bestRow[1] = -1;
- break;
- } else if (bestRow[0] == -1) {
- bestRow[0] = i;
- bestRow[1] = diff;
- } else if (diff > bestRow[1]) {
- bestRow[0] = i;
- bestRow[1] = diff;
- }
- } else {
- bestRow[0] = i;
- bestRow[1] = -1;
- break;
- }
- }
-
- final int row = bestRow[0];
- if (bestRow[1] != -1)
- xPos += distance - bestRow[1];
-
- g.drawString(time.toString(), xPos + 2, yStart + 3 *
- TEXT_SPACEING + row * ROW_HEIGHT);
- lastPos[row] = xPos;
- }
- }
-
- /**
- * Paint the second lines.
- *
- * @param g the graphics object
- */
- private void paintSecondlines(Graphics2D g) {
- g.setColor(processSecondlineColor);
-
- int i;
- for (i = 0; i <= paintSecondlinesSeconds; i += secondsSpaceing) {
- paintSecondlinesLine[0] = paintSecondlinesLine[2] =
- (int) getTimeXPosition(i*1000);
- g.drawLine(paintSecondlinesLine[0], paintSecondlinesLine[1],
- paintSecondlinesLine[2], paintSecondlinesLine[3]);
-
- final int xStringPos = paintSecondlinesLine[0] - 5;
- g.drawString(i+"s", xStringPos, paintSecondlinesYStringPos1);
- if (!showVectorTime && !showLamport)
- g.drawString(i+"s", xStringPos, paintSecondlinesYStringPos2);
- }
-
- if (i > paintSecondlinesSeconds) {
- paintSecondlinesLine[0] = paintSecondlinesLine[2] =
- (int) getTimeXPosition(untilTime);
- g.drawLine(paintSecondlinesLine[0], paintSecondlinesLine[1],
- paintSecondlinesLine[2], paintSecondlinesLine[3]);
- }
- }
-
- /**
- * Paints the global time.
- *
- * @param g the graphics object
- * @param globalTime the global time
- */
- private void paintGlobalTime(Graphics2D g, long globalTime) {
- g.setColor(processSeplineColor);
- final int xOffset = (int) globalTimeXPosition;
-
- final int xPoints[] = {
- xOffset, xOffset + SEPLINE_WIDTH,
- xOffset + SEPLINE_WIDTH, xOffset, xOffset
- };
- final int yOffset = YOFFSET - 8;
- final int yPoints[] = {
- yOffset, yOffset, paintGlobalTimeYPosition,
- paintGlobalTimeYPosition, yOffset
- };
-
- g.fillPolygon(xPoints, yPoints, 5);
- g.drawString(globalTime+"ms", xPoints[1]+1, yPoints[0]+TEXT_SPACEING);
- }
-
- /**
- * Gets the process at a specified y pos.
- *
- * @param yPos the y pos
- *
- * @return the process at y pos
- */
- private VSInternalProcess getProcessAtYPos(int yPos) {
- final int reachDistance = (int) (yDistance/3);
- int y = YOFFSET + YOUTER_SPACEING + YSEPLINE_SPACEING;
-
- int yOffset = numProcesses > 1
- ? (int) ((paintSize-2*
- (YOFFSET+YOUTER_SPACEING+YSEPLINE_SPACEING))/
- (numProcesses-1))
- : (int) ((paintSize-2*
- (YOFFSET+YOUTER_SPACEING+YSEPLINE_SPACEING)));
-
- for (int i = 0; i < numProcesses; ++i) {
- if (yPos < y + reachDistance && yPos > y - reachDistance -
- LINE_WIDTH) {
- VSInternalProcess process = null;
- synchronized (processes) {
- process = processes.get(i);
- }
- return process;
- }
- y += yOffset;
- }
-
- return null;
- }
-
- /**
- * Gets the x position of the given time.
- *
- * @param time the time
- *
- * @return the time x position
- */
- private double getTimeXPosition(long time) {
- return XOFFSET + xpaintsize_dividedby_untiltime * time;
- }
-
- /**
- * Gets the time of a given x position
- *
- * @param xPos the x position
- *
- * @return the time
- */
- private long getXPositionTime(double xPos) {
- xPos -= XOFFSET;
-
- if (xPos <= 0)
- return 0;
-
- else if (xPos >= xPaintSize)
- return untilTime;
-
- return (long) ((untilTime/xPaintSize) * xPos);
- }
-
- /**
- * Gets the process y position.
- *
- * @param i the process num
- *
- * @return the process y position
- */
- private int getProcessYPosition(int i) {
- int y;
-
- if (numProcesses > 1)
- y = (int) ((paintSize -
- 2 * (YOFFSET + YOUTER_SPACEING + YSEPLINE_SPACEING))/
- (numProcesses-1));
- else
- y = (int) ((paintSize -
- 2 * (YOFFSET + YOUTER_SPACEING + YSEPLINE_SPACEING)));
-
- return y * (i - 1) + YOFFSET + YOUTER_SPACEING + YSEPLINE_SPACEING;
- }
-
- /**
- * Gets the time.
- *
- * @return the time
- */
- public long getTime() {
- return simulatorTime;
- }
-
- /**
- * Gets the until time.
- *
- * @return the until time
- */
- public long getUntilTime() {
- return untilTime;
- }
-
- /**
- * Gets the start time.
- *
- * @return the start time
- */
- public long getStartTime() {
- return startTime;
- }
-
- /**
- * Gets the next process id.
- *
- * @return the next process id
- */
- public int processIDCount() {
- return ++processCounter;
- }
-
- /**
- * Gets the task manager.
- *
- * @return the task manager
- */
- public VSTaskManager getTaskManager() {
- return taskManager;
- }
-
- /**
- * Gets the num of processes.
- *
- * @return the num of processes
- */
- public int getNumProcesses() {
- return numProcesses;
- }
-
- /**
- * Gets the specified process.
- *
- * @param processNum the process num to get the process of
- *
- * @return the process
- */
- public VSInternalProcess getProcess(int processNum) {
- synchronized (processes) {
- if (processNum >= processes.size())
- return null;
-
- return processes.get(processNum);
- }
- }
-
- /* (non-Javadoc)
- * @see java.lang.Runnable#run()
- */
- public void run() {
- while (true) {
- while (!hasThreadStopped && (isPaused || hasFinished ||
- isResetted)) {
- try {
- Thread.sleep(100);
- paint();
-
- } catch (Exception e) {
- System.out.println(e);
- }
- }
-
- if (hasThreadStopped)
- break; /* Exit the thread */
-
- while (!isPaused && !hasThreadStopped) {
- try {
- Thread.sleep(threadSleep);
- } catch (Exception e) {
- System.out.println(e);
- }
-
- updateSimulator(time, lastTime);
-
- if (simulatorTime == untilTime) {
- finish();
- break;
- }
-
- paint();
- lastTime = time;
- time = System.currentTimeMillis() - startTime;
- }
-
- updateSimulator(time, lastTime);
- paint();
- }
- }
-
- /**
- * Starts/plays the simulator.
- */
- public void play() {
- loging.log(prefs.getString("lang.en.simulator.started"));
- final long currentTime = System.currentTimeMillis();
-
- synchronized (processes) {
- for (VSInternalProcess p : processes)
- p.play();
- }
-
- if (isResetted)
- isResetted = false;
-
- else if (hasFinished)
- hasFinished = false;
-
- if (isPaused) {
- isPaused = false;
- startTime += currentTime - pauseTime;
- time = currentTime - startTime;
-
- } else {
- startTime = currentTime;
- time = 0;
- }
-
- paint();
- }
-
- /**
- * Called if the simulator has finished.
- */
- public void finish() {
- synchronized (processes) {
- for (VSInternalProcess p : processes)
- p.finish();
- }
-
- simulator.finish();
- hasFinished = true;
- loging.log(prefs.getString("lang.en.simulator.finished"));
- paint();
-
- if (prefs.getBoolean("sim.periodic")) {
- VSSimulatorFrame simulatorFrame = simulator.getSimulatorFrame();
- simulatorFrame.resetCurrentSimulator();
- simulatorFrame.startCurrentSimulator();
- }
- }
-
- /**
- * Call this, in order to pause the simulator.
- */
- public void pause() {
- isPaused = true;
- synchronized (processes) {
- for (VSInternalProcess p : processes)
- p.pause();
- }
-
- pauseTime = System.currentTimeMillis();
- loging.log(prefs.getString("lang.en.simulator.paused"));
- paint();
- }
-
- /**
- * Call this, in order to reset the simulator.
- */
- public void reset() {
- if (!isResetted) {
- loging.log(prefs.getString("lang.en.simulator.resetted"));
-
- isResetted = true;
- isPaused = false;
- hasFinished = false;
- startTime = System.currentTimeMillis();
- time = 0;
- lastTime = 0;
- clockOffset = 0;
- simulatorTime = 0;
-
- synchronized (processes) {
- for (VSInternalProcess process : processes)
- process.reset();
- }
-
- /* Reset the task manager AFTER the processes, for the programmed
- tasks */
- taskManager.reset();
-
- synchronized (processes) {
- for (VSInternalProcess process : processes)
- process.createRandomCrashTask();
- }
-
- synchronized (messageLines) {
- messageLines.clear();
- }
-
- synchronized (messageLinesToRemove) {
- messageLinesToRemove.clear();
- }
-
- paint();
- loging.clear();
- }
- }
-
- /**
- * Stops the thread of the simulator.
- */
- public void stopThread() {
- hasThreadStopped = true;
- }
-
- /**
- * Checks if the thread has been stopped.
- *
- * @return true, if is thread has stopped
- */
- public boolean hasThreadStopped() {
- return hasThreadStopped;
- }
-
- /**
- * Sets, if the the lamport time should be shown. It implicitly disables
- * the vector time.
- *
- * @param showLamport true, if the lamport time should be shown
- */
- public void showLamport(boolean showLamport) {
- this.showLamport = showLamport;
- if (isPaused)
- paint();
- }
-
- /**
- * Sets, if the vector time should be shown. It implicitly disables the
- * lamport time.
- *
- * @param showVectorTime true, if the vector time should be shown
- */
- public void showVectorTime(boolean showVectorTime) {
- this.showVectorTime = showVectorTime;
- if (isPaused)
- paint();
- }
-
- /**
- * Sets if the simulator graphics are anti aliased.
- *
- * @param isAntiAliased true, if the simulator is anti aliased
- */
- public void isAntiAliased(boolean isAntiAliased) {
- this.isAntiAliased = isAntiAliased;
- this.isAntiAliasedChanged = true;
- if (isPaused)
- paint();
- }
-
- /**
- * Sends a message.
- *
- * @param message the message
- */
- public void sendMessage(VSMessage message) {
- VSTask task = null;
- VSAbstractEvent receiveEvent = null;
- VSInternalProcess sendingProcess = (VSInternalProcess)
- message.getSendingProcess();
- long deliverTime, outageTime, durationTime;
- boolean recvOwn = prefs.getBoolean("sim.message.own.recv");
-
- synchronized (processes) {
- for (VSInternalProcess receiverProcess : processes) {
- if (receiverProcess.equals(sendingProcess)) {
- if (recvOwn) {
- deliverTime = sendingProcess.getGlobalTime();
- receiveEvent = new VSMessageReceiveEvent(message);
- task = new VSTask(deliverTime, receiverProcess,
- receiveEvent, VSTask.GLOBAL);
- taskManager.addTask(task);
- }
-
- } else {
- durationTime = sendingProcess.getDurationTime();
-
- if (prefs.getBoolean("sim.message.sendingtime.mean")) {
- durationTime += receiverProcess.getDurationTime();
- durationTime /= 2;
- }
-
- deliverTime = sendingProcess.getGlobalTime() +
- durationTime;
-
- if (prefs.getBoolean("sim.message.prob.mean"))
- outageTime = sendingProcess.getARandomMessageOutageTime(
- durationTime, receiverProcess);
- else
- outageTime = sendingProcess.getARandomMessageOutageTime(
- durationTime, null);
-
- receiveEvent = new VSMessageReceiveEvent(message);
- task = new VSTask(deliverTime, receiverProcess,
- receiveEvent, VSTask.GLOBAL);
-
- /* Only add a 'receiving message' task if the message will
- not get lost! */
- if (outageTime == -1)
- taskManager.addTask(task);
-
- synchronized (messageLines) {
- messageLines.add(
- new VSMessageLine(receiverProcess,
- sendingProcess.getGlobalTime(),
- deliverTime, outageTime,
- sendingProcess.getProcessNum(),
- receiverProcess.getProcessNum(),
- task));
- }
- }
- }
- }
- }
-
- /**
- * Edits the process.
- *
- * @param processNum the process num
- */
- public void editProcess(int processNum) {
- synchronized (processes) {
- VSInternalProcess process = processes.get(processNum);
- /* May be null if another thread changed the processes arraylist
- before this process actually called editProcess */
- if (process != null)
- editProcess(process);
- }
- }
-
- /**
- * Edits the process.
- *
- * @param process the process
- */
- public void editProcess(VSInternalProcess process) {
- if (process != null) {
- process.updatePrefs();
- new VSEditorFrame(prefs, simulator.getSimulatorFrame(),
- new VSProcessEditor(prefs, process));
- }
- }
-
- /**
- * Gets the processes array.
- *
- * @return the processes array
- */
- public ArrayList<VSInternalProcess> getProcessesArray() {
- ArrayList<VSInternalProcess> arr = new ArrayList<VSInternalProcess>();
-
- synchronized (processes) {
- for (VSInternalProcess process : processes)
- arr.add(process);
- }
-
- return arr;
- }
-
- /**
- * Gets the processes IDs.
- *
- * @return the processes IDs
- */
- public Integer[] getProcessIDs() {
- Integer pids[] = null;
-
- synchronized (processes) {
- pids = new Integer[numProcesses];
- for (int i = 0; i < numProcesses; ++i)
- pids[i] = new Integer(processes.get(i).getProcessID());
- }
-
- return pids;
- }
-
- /**
- * Gets the processes.
- *
- * @return the processes
- */
- public ArrayList<VSInternalProcess> getProcesses() {
- return processes;
- }
-
- /**
- * Updates from the prefs. Called by the VSSimulatorEditor if values
- * have been saved.
- */
- public void updateFromPrefs() {
- untilTime = prefs.getInteger("sim.seconds") * 1000;
- clockSpeed = prefs.getFloat("sim.clock.speed");
-
- secondsSpaceing = (int) (untilTime / 15000);
- if (secondsSpaceing == 0)
- secondsSpaceing = 1;
-
- threadSleep = (int) (untilTime / 7500);
- if (threadSleep == 0)
- threadSleep = 1;
-
- recalcOnChange();
- }
-
- /**
- * Removes a specific message line from the painting area.
- *
- * @param messageLine the message line to remove
- */
- private void removeMessageLine(VSMessageLine messageLine) {
- synchronized (messageLinesToRemove) {
- messageLinesToRemove.add(messageLine);
- }
- }
-
- /**
- * Removes a process from the simulator.
- *
- * @param process the process
- */
- private void removeProcess(VSInternalProcess process) {
- if (numProcesses == 1) {
- simulator.getSimulatorFrame().removeSimulator(simulator);
-
- } else {
- int index = 0;
- synchronized (processes) {
- index = processes.indexOf(process);
- processes.remove(index);
-
- for (VSInternalProcess p : processes)
- p.removedAProcessAtIndex(index);
-
- numProcesses = processes.size();
- }
-
- taskManager.removeTasksOf(process);
- simulator.removedAProcessAtIndex(index);
- recalcOnChange();
-
- ArrayList<VSMessageLine> removeThose =
- new ArrayList<VSMessageLine>();
-
- synchronized (messageLines) {
- for (VSMessageLine line : messageLines)
- if (line.removedAProcessAtIndex(index))
- removeThose.add(line);
-
- for (VSMessageLine line : removeThose) {
- VSTask deliverTask = line.getTask();
-
- if (deliverTask != null)
- taskManager.removeTask(deliverTask);
-
- messageLines.remove(line);
- }
- }
- }
- }
-
- /**
- * Creates a process with the specified num.
- *
- * @param processNum the process num
- *
- * @return the new process
- */
- private VSInternalProcess createProcess(int processNum) {
- VSInternalProcess process =
- new VSInternalProcess(prefs, processNum, this, loging);
- loging.log(prefs.getString("lang.en.process.new") + "; " + process);
- return process;
- }
-
- /**
- * Adds a new process to the simulator.
- *
- * @return The process which has been added
- */
- private VSInternalProcess addProcess() {
- VSInternalProcess newProcess = null;
- //int foo = -1;
- //System.out.println("ADD " + ++foo);
- synchronized (processes) {
- //System.out.println("ADD " + ++foo);
- numProcesses = processes.size() + 1;
- //System.out.println("ADD " + ++foo);
- newProcess = createProcess(processes.size());
- //System.out.println("ADD " + ++foo);
- //System.out.println("ADD " + ++foo);
- }
-
- //System.out.println("ADD " + ++foo);
- addProcess(newProcess);
- //System.out.println("ADD " + ++foo);
- return newProcess;
- }
-
- /**
- * Adds a the given process to the simulator.
- *
- * @newProcess The process to add
- */
- private void addProcess(VSInternalProcess newProcess) {
- //int foo = -1;
- //System.out.println("ADD_ " + ++foo);
- synchronized (processes) {
- //System.out.println("ADD_ " + ++foo);
- processes.add(newProcess);
-
- for (VSInternalProcess process : processes)
- if (!process.equals(newProcess))
- process.addedAProcess();
- //System.out.println("ADD_ " + ++foo);
- }
-
- //System.out.println("ADD_ " + ++foo);
- recalcOnChange();
- //System.out.println("ADD_ " + ++foo);
- simulator.addProcessAtIndex(processes.size()-1);
- //System.out.println("ADD_ " + ++foo);
- }
-
- /**
- * Checks if the simulation is paused.
- *
- * @return true, if the simulation is paused
- */
- boolean isPaused() {
- return isPaused;
- }
-
- /**
- * Checks if the simulation is resetted.
- *
- * @return true, if the simulation is resetted
- */
- boolean isResetted() {
- return isResetted;
- }
-
- /**
- * Checks if the simulation has finished
- *
- * @return true, if the simulation has finished
- */
- boolean hasFinished() {
- return hasFinished;
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
- * java.io.ObjectOutputStream)
- */
- public synchronized void serialize(VSSerialize serialize,
- ObjectOutputStream objectOutputStream)
- throws IOException {
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
-
- objectOutputStream.writeObject(new Integer(processCounter));
-
- synchronized (processes) {
- objectOutputStream.writeObject(new Integer(numProcesses));
- for (VSInternalProcess process : processes)
- process.serialize(serialize, objectOutputStream);
- }
-
- taskManager.serialize(serialize, objectOutputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectOutputStream.writeObject(new Boolean(false));
- }
-
- /* (non-Javadoc)
- * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
- * java.io.ObjectInputStream)
- */
- @SuppressWarnings("unchecked")
- public synchronized void deserialize(VSSerialize serialize,
- ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- if (VSSerialize.DEBUG)
- System.out.println("Deserializing: VSSimulatorVisualization");
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
-
- processCounter = ((Integer) objectInputStream.readObject()).intValue();
-
- int num = ((Integer) objectInputStream.readObject()).intValue();
- loging.clear();
-
- if (num > numProcesses) {
- for (int i = numProcesses; i < num; ++i)
- addProcess();
- } else {
- int oldNum = numProcesses;
- for (int i = num; i < oldNum; ++i)
- removeProcess(getProcess(0));
- }
-
- for (int i = 0; i < num; ++i)
- processes.get(i).deserialize(serialize, objectInputStream);
-
- taskManager.deserialize(serialize, objectInputStream);
-
- /** For later backwards compatibility, to add more stuff */
- objectInputStream.readObject();
- }
-}
diff --git a/sources/utils/VS3Tupel.java b/sources/utils/VS3Tupel.java
deleted file mode 100644
index 4d4c896..0000000
--- a/sources/utils/VS3Tupel.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package utils;
-
-/**
- * The class VS3Tupel, an object of this class represents a 3-Tupel of objects.
- * Each object can have its own type.
- *
- * @author Paul C. Buetow
- */
-public final class VS3Tupel<A,B,C> {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The a. */
- private A a;
-
- /** The b. */
- private B b;
-
- /** The c. */
- private C c;
-
- /**
- * Instantiates a new tupel.
- *
- * @param a the a
- * @param b the b
- * @param c the c
- */
- public VS3Tupel(A a, B b, C c) {
- this.a = a;
- this.b = b;
- this.c = c;
- }
-
- /**
- * Gets the a.
- *
- * @return the a
- */
- public A getA() {
- return a;
- }
-
- /**
- * Gets the b.
- *
- * @return the b
- */
- public B getB() {
- return b;
- }
-
- /**
- * Gets the c.
- *
- * @return the c
- */
- public C getC() {
- return c;
- }
-}
diff --git a/sources/utils/VSAboutFrame.java b/sources/utils/VSAboutFrame.java
deleted file mode 100644
index 03ed8c4..0000000
--- a/sources/utils/VSAboutFrame.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package utils;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.*;
-
-import prefs.*;
-//import utils.*;
-
-/**
- * The class VSAboutFrame. This class is only for the about window which
- * shows up if selected in the GUI.
- *
- * @author Paul C. Buetow
- */
-public class VSAboutFrame extends VSFrame {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The prefs. */
- private VSPrefs prefs;
-
- /**
- * Instantiates a new VSAboutFrame object.
- *
- * @param prefs the prefs
- * @param relativeTo the component to open the about window relative to
- */
- public VSAboutFrame(VSPrefs prefs, Component relativeTo) {
- super(prefs.getString("lang.en.name") + " - "
- + prefs.getString("lang.en.about"), relativeTo);
- this.prefs = prefs;
-
- disposeWithParent();
- setContentPane(createContentPane());
- setSize(350, 250);
- setResizable(false);
- setVisible(true);
- }
-
- /**
- * Creates the content pane.
- *
- * @return the container
- */
- public Container createContentPane() {
- Container contentPane = getContentPane();
-
- VSInfoArea infoArea = new VSInfoArea(
- prefs.getString("lang.en.about.info"));
- JPanel buttonPane = createButtonPanel();
- JScrollPane scrollPane = new JScrollPane(infoArea);
-
- contentPane.add(scrollPane, BorderLayout.CENTER);
- contentPane.add(buttonPane, BorderLayout.SOUTH);
-
- return contentPane;
- }
-
- /**
- * Creates the button panel.
- *
- * @return the panel
- */
- public JPanel createButtonPanel() {
- JPanel buttonPane = new JPanel();
- buttonPane.setBackground(Color.WHITE);
-
- JButton closeButton = new JButton(
- prefs.getString("lang.en.close"));
- closeButton.setMnemonic(prefs.getInteger("keyevent.close"));
- closeButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- String actionCommand = e.getActionCommand();
- if (actionCommand.equals(prefs.getString("lang.en.close")))
- dispose();
- }
- });
- buttonPane.add(closeButton);
-
- return buttonPane;
- }
-}
diff --git a/sources/utils/VSClassLoader.java b/sources/utils/VSClassLoader.java
deleted file mode 100644
index 49fcc6b..0000000
--- a/sources/utils/VSClassLoader.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package utils;
-
-/**
- * The class VSClassLoader. This class is used in order to create new objects
- * by its classnames.
- *
- * @author Paul C. Buetow
- */
-public class VSClassLoader extends ClassLoader {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Creates a new instance of the given classname.
- *
- * @param classname the classname
- *
- * @return the object
- */
- public Object newInstance(String classname) {
- Object object = null;
-
- try {
- object = super.loadClass(classname, true).newInstance();
-
- } catch (Exception e) {
- System.out.println(e + "; Classname " + classname);
- }
-
- return object;
- }
-}
diff --git a/sources/utils/VSFrame.java b/sources/utils/VSFrame.java
deleted file mode 100644
index fbc2139..0000000
--- a/sources/utils/VSFrame.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package utils;
-
-import java.awt.*;
-import java.awt.event.*;
-import javax.swing.JFrame;
-
-/**
- * The class VSFrame. All frames of the simulator extend this VSFrame class.
- * This class makes sure that all 'subwindows' get closed if its parent gets
- * closed. And it also makes sure to open new windows relative to its parent.
- *
- * @author Paul C. Buetow
- */
-public class VSFrame extends JFrame {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /** The Constant X_LOCATION_OFFSET. */
- private final static int X_LOCATION_OFFSET = 40;
-
- /** The Constant Y_LOCATION_OFFSET. */
- private final static int Y_LOCATION_OFFSET = 80;
-
- /** The parent window/component. */
- private Component parent;
-
- /** True, if the current window will get disposed with its parent. */
- private boolean dispose;
-
- /**
- * Instantiates a VSFrame object.
- *
- * @param title the title
- * @param parent the parent
- */
- public VSFrame(String title, Component parent) {
- super(title);
- init(parent);
- }
-
- /**
- * Instantiates a new VSFrame object.
- *
- * @param title the title
- */
- public VSFrame(String title) {
- super(title);
- init(null);
- }
-
- /**
- * Inits the VSFrame.
- *
- * @param parent the parent
- */
- private void init(Component parent) {
- this.parent = parent;
- this.dispose = false;
- }
-
- /**
- * Dispose with its parent.
- */
- public void disposeWithParent() {
- if (!dispose && parent != null && parent instanceof Window) {
- Window window = (Window) parent;
- window.addWindowListener(new WindowAdapter() {
- public void windowClosed(WindowEvent we) {
- VSFrame.this.dispose();
- }
- });
- }
- dispose = true;
- }
-
- /**
- * Sets the correct location of the window.
- */
- private void setCorrectLocation() {
- int x = 0, y = 0;
- final Dimension screenSize =
- Toolkit.getDefaultToolkit().getScreenSize();
-
- if (parent == null) {
- x = (int) (screenSize.width - getWidth()) / 2;
- y = 50;//(int) (screenSize.height - getHeight()) / 2;
-
- } else {
- final Point location = parent.getLocation();
- x = (int) location.getX() + X_LOCATION_OFFSET;
- y = (int) location.getY() + Y_LOCATION_OFFSET;
- }
-
- if (x + super.getWidth() >= screenSize.width)
- x = screenSize.width - super.getWidth();
- else if (x < 0)
- x = 0;
-
- if (y + super.getHeight() >= screenSize.height)
- y = screenSize.height - super.getHeight();
-
- super.setLocation(x, y);
- }
-
- /* (non-Javadoc)
- * @see java.awt.Window#setSize(int, int)
- */
- public void setSize(int width, int height) {
- super.setSize(width, height);
- setCorrectLocation();
- }
-}
diff --git a/sources/utils/VSInfoArea.java b/sources/utils/VSInfoArea.java
deleted file mode 100644
index ce88699..0000000
--- a/sources/utils/VSInfoArea.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package utils;
-
-import java.awt.*;
-import javax.swing.*;
-import javax.swing.border.*;
-
-/**
- * The class VSInfoArea, an object of this class is used for some information
- *areas. E.g. in the VSAboutFrame class.
- *
- * @author Paul C. Buetow
- */
-public class VSInfoArea extends JTextPane {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a new VSInfoArea.
- */
- public VSInfoArea() {
- init();
- }
-
- /**
- * Instantiates a new VSInfoArea.
- *
- * @param text the text to display
- */
- public VSInfoArea(String text) {
- setText(text);
- init();
- }
-
- /**
- * Inits the info area.
- */
- private void init() {
- setOpaque(false);
- setBorder(null);
- setFocusable(false);
- setBorder(new CompoundBorder(
- new LineBorder(Color.BLACK),
- new EmptyBorder(15, 15, 15, 15)));
- setBackground(Color.WHITE);
- }
-}
diff --git a/sources/utils/VSPriorityQueue.java b/sources/utils/VSPriorityQueue.java
deleted file mode 100644
index 739a886..0000000
--- a/sources/utils/VSPriorityQueue.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package utils;
-
-import java.util.PriorityQueue;
-
-/**
- * The class VSPriorityQueue. This class is the same like the standard
- * VSPriorityQueue of the Java API. It only overrides the get(int) method.
- *
- * @author Paul C. Buetow
- */
-public final class VSPriorityQueue<T> extends PriorityQueue<T> {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Gets the specific element. If the index is out of bounds, it will return
- * null.
- *
- * @param index the index
- *
- * @return the element, or null, if out of bounds
- */
- public T get(int index) {
- int i = 0;
-
- for (T t : this)
- if (i++ == index)
- return t;
-
- return null;
- }
-}
diff --git a/sources/utils/VSRandom.java b/sources/utils/VSRandom.java
deleted file mode 100644
index d955aae..0000000
--- a/sources/utils/VSRandom.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package utils;
-
-import java.util.Random;
-
-/**
- * The class VSRandom. Some customization of the standard Random class of Java.
- *
- * @author Paul C. Buetow
- */
-public final class VSRandom extends Random {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Instantiates a new VSrandom object.
- *
- * @param seedAdd the seed to add.
- */
- public VSRandom(long seedAdd) {
- super(seedAdd*System.currentTimeMillis()+seedAdd);
- }
-
- /* (non-Javadoc)
- * @see java.util.Random#nextInt()
- */
- public int nextInt() {
- return Math.abs(super.nextInt());
- }
-
- /**
- * Next long.
- *
- * @param mod the mod
- *
- * @return the random long
- */
- public long nextLong(long mod) {
- return Math.abs((super.nextLong() + System.currentTimeMillis()) % mod);
- }
-}
diff --git a/sources/utils/VSTools.java b/sources/utils/VSTools.java
deleted file mode 100644
index feece80..0000000
--- a/sources/utils/VSTools.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (c) 2008 Paul C. Buetow, vs@dev.buetow.org
- *
- * 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 2
- * 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, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * All icons of the icons/ folder are under a Creative Commons
- * Attribution-Noncommercial-Share Alike License a CC-by-nc-sa.
- *
- * The icon's homepage is http://code.google.com/p/ultimate-gnome/
- */
-
-package utils;
-
-import java.util.Vector;
-
-/**
- * The class VSTools. This class contains only static methods. Those methods
- * are for general usage and don't fit into other classes.
- *
- * @author Paul C. Buetow
- */
-public final class VSTools {
- /** The serial version uid */
- private static final long serialVersionUID = 1L;
-
- /**
- * Gets the time string.
- *
- * @param time the time
- *
- * @return the time string
- */
- public static String getTimeString(long time) {
- String ret = ""+time;
-
- while (ret.length() < 6)
- ret = "0" + ret;
-
- return ret + "ms";
- }
-
- /**
- * Gets the string time.
- *
- * @param string the string
- *
- * @return the string time
- */
- public static long getStringTime(String string) {
- try {
- /* Ignore the "ms" postfix */
- Long longValue = Long.valueOf(
- string.substring(0, string.length()-2));
- return longValue.longValue();
- } catch (NumberFormatException e) {
- }
-
- return 0;
- }
-
- /**
- * Gets the integer vector represented by a comma separated string.
- *
- * @param string the string
- *
- * @return the parsed vector
- */
- public static Vector<Integer> parseIntegerVector(String string)
- throws exceptions.VSParseIntegerVectorException {
- Vector<Integer> vec = new Vector<Integer>();
-
- int index = string.indexOf('[');
- if (index == -1)
- throw new exceptions.VSParseIntegerVectorException();
-
- string = string.substring(index+1);
-
- index = string.indexOf(']');
- if (index == -1)
- throw new exceptions.VSParseIntegerVectorException();
-
- string = string.substring(0, index);
-
- try {
- while ( (index = string.indexOf(',')) != -1 ) {
- String substring = string.substring(0, index);
-
- /* Remove leading whitespaces */
- while (substring.charAt(0) == ' ')
- substring = substring.substring(1);
-
- vec.add(Integer.parseInt(substring));
- string = string.substring(index+1);
- }
-
- /* Remove leading whitespaces */
- while (string.charAt(0) == ' ')
- string = string.substring(1);
- vec.add(Integer.parseInt(string));
-
- } catch (StringIndexOutOfBoundsException e) {
- } catch (NumberFormatException e) {
- }
-
- return vec;
- }
-}