editor.java

来自「petrinets小程序」· Java 代码 · 共 976 行 · 第 1/3 页

JAVA
976
字号
import java.awt.*;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.JFrame;


public class Editor extends JFrame{
	
	MenuBar menubar;
	Menu file, help, Settings, Parallel, Sequentiell, Painting;
	CheckboxMenuItem ParMan, ParRan, SeqMan, SeqRan, BW, Col;
	Button okay, cancel;
	FileDialog Load, Save;
	String InputFile, InputPath, OutputFile, OutputPath;
	boolean alreadySaved;
	boolean runHolding;
	boolean demo;
	LoadPetriNet Loading;
	SavePetriNet Saving;
	OverwriteDialog ODialog;
	ShowDialog ShowOp;
	TextField StatusLine, StatusMode, StatusDiv, StatusCount;
	pn PNet;
	pn OldPNet;
	visOfGraph Vis;
	Toolkit tk;
	CPictBar PBar;
	HelpBox HelpCom;
	HelpAbout HelpAb;
	runPN runStep;
	int StepCount;
	int runDelay;
	boolean AppletState, NoFileAccess;
	URL Docbase;
	Panel Status;
//	LoadPetriNetApplet LoadApplet;
//	visOfStructure visOfStr;

	
	
	
	public Editor(String title, URL DocBase) {
	      super(title);

	      System.out.println("jPNS is loading...");
	      PNet = new pn();
//	      visOfStr = new visOfStructure(this);
	      StepCount = 0;
	      runDelay = 100;
	      runHolding = false;
	      AppletState = false;
	      NoFileAccess = false;
	      demo = false;
	      Docbase = DocBase;

	      // Create the menubar.  Tell the frame about it.
	      menubar = new MenuBar();
	      this.setMenuBar(menubar);

	      Save = new FileDialog(this,"Save Petri-Net File",FileDialog.SAVE);
	      Load = new FileDialog(this,"Load Petri-Net File",FileDialog.LOAD);
	      Loading = new LoadPetriNet();
	      Saving = new SavePetriNet();
	      alreadySaved = false;

	      // Create the file menu.  Add two items to it.  Add to menubar.
	      file = new Menu("File");
	      file.add(new MenuItem("New"));
	      file.add(new MenuItem("Load..."));
	      file.add(new MenuItem("Save"));
	      file.add(new MenuItem("Save As..."));
	      file.add(new MenuItem("Quit"));
	      menubar.add(file);

	      // Create submenus for Setting menu
	      ParMan = new CheckboxMenuItem("Manual");
	      ParRan = new CheckboxMenuItem("Random");
	      Parallel = new Menu("Parallel");
	      Parallel.add(ParRan);
	      Parallel.add(ParMan);

	      SeqMan = new CheckboxMenuItem("Manual");
	      SeqRan = new CheckboxMenuItem("Random");
	      Sequentiell = new Menu("Sequential");
	      Sequentiell.add(SeqRan);
	      Sequentiell.add(SeqMan);
	      SeqRan.setState(true);

	      BW = new CheckboxMenuItem("Black/White");
	      Col = new CheckboxMenuItem("Color");
	      Painting = new Menu("Painting");
	      Painting.add(Col);
	      Painting.add(BW);

	      // Create the Settings menu
	      Settings = new Menu("Settings");
	      Settings.add(Parallel);
	      Settings.add(Sequentiell);
	      Settings.addSeparator();
	      Settings.add(new MenuItem("Options"));
	      Settings.addSeparator();
	      Settings.add(Painting);
	      menubar.add(Settings);
	      Col.setState(true);

	      // Create Help menu; add an item; add to menubar
	      help = new Menu("Help");
	      help.add(new MenuItem("About"));
	      help.add(new MenuItem("Commands"));
	      menubar.add(help);
	      // Display the help menu in a special reserved place.
	      menubar.setHelpMenu(help);

	      // Buttonbar
	      tk = this.getToolkit();
	      Image[] ups = new Image[12];
	      Image[] downs = new Image[12];
	      Image[] diss = new Image[12];
	      try {
	        File dtry = new File("examples");
	        if (dtry.isDirectory()) Load.setDirectory(dtry.getAbsolutePath());
	      }
	      catch (SecurityException se) {NoFileAccess = true;}
	      if (DocBase != null) {
	        AppletState = true;
	        try {
	            ups[0] = tk.getImage(new URL(DocBase, "images/Release.GIF"));
	            ups[1] = tk.getImage(new URL(DocBase, "images/AddNode.GIF"));
	            ups[2] = tk.getImage(new URL(DocBase, "images/AddTransition.GIF"));
	            ups[3] = tk.getImage(new URL(DocBase, "images/AddEdge.GIF"));
	            ups[4] = tk.getImage(new URL(DocBase, "images/AddToken.GIF"));
	            ups[5] = tk.getImage(new URL(DocBase, "images/Edit.GIF"));
	            ups[6] = tk.getImage(new URL(DocBase, "images/Delete.GIF"));
	            ups[7] = tk.getImage(new URL(DocBase, "images/Save.GIF"));
	            ups[8] = tk.getImage(new URL(DocBase, "images/Memorize.GIF"));
	            ups[9] = tk.getImage(new URL(DocBase, "images/Memback.GIF"));
	            ups[10] = tk.getImage(new URL(DocBase, "images/Step.GIF"));
	            ups[11] = tk.getImage(new URL(DocBase, "images/StepSing.GIF"));
	            downs[0] = tk.getImage(new URL(DocBase, "images/ReleaseSelected.GIF"));
	            downs[1] = tk.getImage(new URL(DocBase, "images/AddNodeSelected.GIF"));
	            downs[2] = tk.getImage(new URL(DocBase, "images/AddTransitionSelected.GIF"));
	            downs[3] = tk.getImage(new URL(DocBase, "images/AddEdgeSelected.GIF"));
	            downs[4] = tk.getImage(new URL(DocBase, "images/AddTokenSelected.GIF"));
	            downs[5] = tk.getImage(new URL(DocBase, "images/EditSelected.GIF"));
	            downs[6] = tk.getImage(new URL(DocBase, "images/DeleteSelected.GIF"));
	            downs[7] = tk.getImage(new URL(DocBase, "images/SaveSelected.GIF"));
	            downs[8] = tk.getImage(new URL(DocBase, "images/MemorizeSelected.GIF"));
	            downs[9] = tk.getImage(new URL(DocBase, "images/MembackSelected.GIF"));
	            downs[10] = tk.getImage(new URL(DocBase, "images/StepSelected.GIF"));
	            downs[11] = tk.getImage(new URL(DocBase, "images/StepSingSelected.GIF"));
	            diss[0] = tk.getImage(new URL(DocBase, "images/ReleaseSelected.GIF"));
	            diss[1] = tk.getImage(new URL(DocBase, "images/AddNodeSelected.GIF"));
	            diss[2] = tk.getImage(new URL(DocBase, "images/AddTransitionSelected.GIF"));
	            diss[3] = tk.getImage(new URL(DocBase, "images/AddEdgeSelected.GIF"));
	            diss[4] = tk.getImage(new URL(DocBase, "images/AddTokenSelected.GIF"));
	            diss[5] = tk.getImage(new URL(DocBase, "images/EditSelected.GIF"));
	            diss[6] = tk.getImage(new URL(DocBase, "images/DeleteSelected.GIF"));
	            diss[7] = tk.getImage(new URL(DocBase, "images/SaveSelected.GIF"));
	            diss[8] = tk.getImage(new URL(DocBase, "images/MemorizeSelected.GIF"));
	            diss[9] = tk.getImage(new URL(DocBase, "images/MembackSelected.GIF"));
	            diss[10] = tk.getImage(new URL(DocBase, "images/StepSelected.GIF"));
	            diss[11] = tk.getImage(new URL(DocBase, "images/StepSingSelected.GIF"));
	        }
	        catch (MalformedURLException m) {System.out.println("Wrong URL");}
	      } else {
	        ups[0] = tk.getImage("images/Release.GIF");
	        ups[1] = tk.getImage("images/AddNode.GIF");
	        ups[2] = tk.getImage("images/AddTransition.GIF");
	        ups[3] = tk.getImage("images/AddEdge.GIF");
	        ups[4] = tk.getImage("images/AddToken.GIF");
	        ups[5] = tk.getImage("images/Edit.GIF");
	        ups[6] = tk.getImage("images/Delete.GIF");
	        ups[7] = tk.getImage("images/Save.GIF");
	        ups[8] = tk.getImage("images/Memorize.GIF");
	        ups[9] = tk.getImage("images/Memback.GIF");
	        ups[10] = tk.getImage("images/Step.GIF");
	        ups[11] = tk.getImage("images/StepSing.GIF");
	        downs[0] = tk.getImage("images/ReleaseSelected.GIF");
	        downs[1] = tk.getImage("images/AddNodeSelected.GIF");
	        downs[2] = tk.getImage("images/AddTransitionSelected.GIF");
	        downs[3] = tk.getImage("images/AddEdgeSelected.GIF");
	        downs[4] = tk.getImage("images/AddTokenSelected.GIF");
	        downs[5] = tk.getImage("images/EditSelected.GIF");
	        downs[6] = tk.getImage("images/DeleteSelected.GIF");
	        downs[7] = tk.getImage("images/SaveSelected.GIF");
	        downs[8] = tk.getImage("images/MemorizeSelected.GIF");
	        downs[9] = tk.getImage("images/MembackSelected.GIF");
	        downs[10] = tk.getImage("images/StepSelected.GIF");
	        downs[11] = tk.getImage("images/StepSingSelected.GIF");
	        diss[0] = tk.getImage("images/ReleaseSelected.GIF");
	        diss[1] = tk.getImage("images/AddNodeSelected.GIF");
	        diss[2] = tk.getImage("images/AddTransitionSelected.GIF");
	        diss[3] = tk.getImage("images/AddEdgeSelected.GIF");
	        diss[4] = tk.getImage("images/AddTokenSelected.GIF");
	        diss[5] = tk.getImage("images/EditSelected.GIF");
	        diss[6] = tk.getImage("images/DeleteSelected.GIF");
	        diss[7] = tk.getImage("images/SaveSelected.GIF");
	        diss[8] = tk.getImage("images/MemorizeSelected.GIF");
	        diss[9] = tk.getImage("images/MembackSelected.GIF");
	        diss[10] = tk.getImage("images/StepSelected.GIF");
	        diss[11] = tk.getImage("images/StepSingSelected.GIF");
	      }

	      PBar = new CPictBar(ups, downs, diss, 12);

	      this.setLayout(new BorderLayout(3,1));
	      this.add("North", PBar);

	      Dimension dimvis = new Dimension(1000,1000);
	      Vis = new visOfGraph(PNet, dimvis);
	      this.add("West", Vis);
	      Vis.resize(1000,1000);
	      // Status
	      Status = new Panel();
	      Status.setLayout(new FlowLayout());
	      StatusLine = new TextField("Everything OK!", 50);
	      StatusLine.setEditable(false);
	      StatusMode = new TextField("SeqRan", 10);
	      StatusMode.setEditable(false);
	      StatusDiv = new TextField("Color", 5);
	      StatusDiv.setEditable(false);
	      StatusCount = new TextField("0", 5);
	      StatusCount.setEditable(false);
	      Status.add(StatusLine);
	      Status.add(StatusMode);
	      Status.add(StatusDiv);
	      Status.add(StatusCount);
	      this.add("South", Status);
	      this.setBackground(Color.lightGray);
	      Vis.setBackground(Color.white);
	   }
	
/*	
	void loadAppletPN(String file) {
	      try {
	         URL LoadNetAppl = new URL(Docbase, "examples/" + file + ".net");
	         PNet = Loading.loadNewNetApplet(LoadNetAppl);
	         Vis.setPN(PNet);
	         StatusLine.setText("PetriNet loaded.");
	      }
	      catch (MalformedURLException m) {
	         StatusLine.setText("Sorry, the specified URL can't be opened.");
	      }
	      catch (IOException i) {
	         StatusLine.setText("Sorry, the specified URL can't be connected to.");
	      }
	   }
*/	
	
	boolean loadPN() {
	      if (InputFile.length() != 0) {
	         try {
	            if (Loading.setFile(InputPath)) {
	               PNet = Loading.loadNewNet();
	               return true;
	            } else {
	               StatusLine.setText("The selected file \"" + InputPath + "\" is no PetriNet-File.");

	               return false;
	            }
	         }
	         catch (FileNotFoundException f) {
	            StatusLine.setText("Sorry, the file \"" + InputPath + "\" can't be found.");
	            return false;
	         }
	         catch (IOException i) {
	            StatusLine.setText("Sorry, the file \"" + InputPath + "\" can't be opened.");
	            return false;
	         }
	         catch (SecurityException s) {
	            (new SorryDialog(this)).show();
	            return false;
	         }
	      } 
	      else {
	         return false;
	      }
	}
	
	boolean savePN(boolean simple) {
	      if (OutputFile.length() != 0) {
	         try {
	            Saving.setFile(OutputPath);
	            Saving.saveNet(PNet);
	            return true;
	         }
	         catch (FileExistsException f) {
	            if (!simple || !alreadySaved) {
	               ODialog = new OverwriteDialog(this, "File " + OutputPath + " exists! Overwrite?", Saving, PNet);
	               ODialog.show();
	               return true;
	            } else {
	               try {
	                   Saving.deleteFile();
	                   Saving.saveNet(PNet);
	                   return true;
	               }
	               catch (IOException i) {
	                   StatusLine.setText("Can't save PetriNet in file \"" + OutputPath + ".\" Writeprotected?");
	                   return false;
	               }
	               catch (SecurityException s) {
	                   (new SorryDialog(this)).show();
	                   return false;
	               }
	            }
	         }
	         catch (IOException i) {
	            StatusLine.setText("Can't save PetriNet in file \"" + OutputPath + ".\" Writeprotected?");
	            return false;
	         }
	         catch (SecurityException s) {
	            (new SorryDialog(this)).show();
	            return false;
	         }
	      }
	      else return false;
	}

	public pn returnPNet(){
		return PNet;
		

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?