summaryrefslogtreecommitdiff
path: root/sources/simulator/VSSimulatorFrame.java
diff options
context:
space:
mode:
authorPaul Buetow (centauri) <puppet@mx.buetow.org>2015-05-23 21:59:43 +0100
committerPaul Buetow (centauri) <puppet@mx.buetow.org>2015-05-23 21:59:43 +0100
commit9fc2fc3ccdedf1b7e48f8dfb618ca6cb6a2a662e (patch)
tree0fa92fe4e75cb53ffbf7eb56b5455eb9457bb06c /sources/simulator/VSSimulatorFrame.java
parentf7873669a43421331e14b8921ebdaa8af4393bd5 (diff)
parent32749241efc1f5f70056d74a90237388f57ea350 (diff)
Merge remote-tracking branch 'remotes/github/packages' into packagespackages
Diffstat (limited to 'sources/simulator/VSSimulatorFrame.java')
-rw-r--r--sources/simulator/VSSimulatorFrame.java632
1 files changed, 0 insertions, 632 deletions
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;
- }
-}