editor.java

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

JAVA
976
字号
	                }
	             }
	             if (SeqRan.getState()) {
	                if (runStep == null) {
	                    runStep = new runPN(PNet, this, Vis, runPN.SEQRAN, true);
	                    runSeqRan(11);
	                } else {
	                    if (runStep.isAlive()) {
	                        if (runHolding) {
	                            runHolding = false;
	             runButtonHighlight(11);
	                            runStep.resume();
	                        } else {
	                            controlRunStep();
	                        }
	                    } else {
	                        runStep = new runPN(PNet, this, Vis, runPN.SEQRAN, true);
	                        runSeqRan(11);
	                    }
	                }
	             }
	             return true;
	         }
	      return false;
	      }
	   return false;
	   }
	
//	
//	
//	
//	
//
	
	public boolean handleEvent(Event event) {
	      int a;
	      switch(event.id) {
	      case Event.ACTION_EVENT:
	         if (event.target instanceof MenuItem) {
	      		if (event.target instanceof CheckboxMenuItem) {
	            	if (event.target == ParRan) {
	               	controlRunStep();
	                  StatusLine.setText("Step mode set to Parallel Random.");
	                  StatusMode.setText("ParRan");
	                  ParMan.setState(false);
	                  SeqRan.setState(false);
	                  SeqMan.setState(false);
	            	}
	               if (event.target == ParMan) {
	                  controlRunStep();
	                  StatusLine.setText("Step mode set to Parallel Manual.");
	                  StatusMode.setText("ParMan");
	                  ParRan.setState(false);
	                  SeqRan.setState(false);
	                  SeqMan.setState(false);
	               }
	               if (event.target == SeqRan) {
	                  controlRunStep();
	                  StatusLine.setText("Step mode set to Sequential Random.");
	                  StatusMode.setText("SeqRan");
	                  SeqMan.setState(false);
	                  ParRan.setState(false);
	                  ParMan.setState(false);
	               }
	               if (event.target == SeqMan) {
	                  controlRunStep();
	                  StatusLine.setText("Step mode set to Sequential Manual.");
	                  StatusMode.setText("SeqMan");
	                  SeqRan.setState(false);
	                  ParRan.setState(false);
	                  ParMan.setState(false);
	               }
	               if (event.target == Col) {
	                  Vis.setColorMode(visOfGraph.COLORMODE_STANDARD);
	                  StatusLine.setText("Paintings set to Color.");
	                  StatusDiv.setText("Color");
	                  BW.setState(false);
			  Vis.repaint();
	               }
	               if (event.target == BW) {
	                  Vis.setColorMode(visOfGraph.COLORMODE_BLACKANDWHITE);
	                  StatusLine.setText("Paintings set to Black/White.");
	                  StatusDiv.setText("B/W");
	                  Col.setState(false);
			  Vis.repaint();
	               }
	      		} else {
	               if (((String)event.arg).equals("New")) {
	                  controlRunStep();
	                  PNet = new pn();
	                  alreadySaved = false;
	                  Vis.setPN(PNet);
	                  Vis.repaint();
	               }
	               if (((String)event.arg).equals("Quit")) {
	                  controlRunStep();
	                  this.hide();
	                  if (! AppletState) {
	                   this.dispose();
	                   System.exit(0);
	                  }
	                  return true;
	               }
	               if (((String)event.arg).equals("Load...")) {
	                  controlRunStep();
	                  StatusLine.setText("Insert file name to load PetriNet from..");
	                  if (! NoFileAccess) {
	                     Load.show();
	                     InputFile = Load.getFile();
	                     try {
	                         a = InputFile.length();
	                         InputPath = Load.getDirectory() + InputFile;
	                         Load.setFile(InputFile);
	                         if (loadPN()) {
	                            Vis.setPN(PNet);
	                            OutputFile = InputFile;
	                            OutputPath = InputPath;
	                            Save.setDirectory(Load.getDirectory());
	                            Save.setFile(InputFile);
	                            alreadySaved = false;
	                            StatusLine.setText("PetriNet loaded.");
	                         }
	                     }
	                     catch (NullPointerException n) {
	                     }
	                  } else {
//	                     if (LoadApplet == null) {
//	                        LoadApplet = new LoadPetriNetApplet(this, Docbase);
	                  ;}
//	                     LoadApplet.show();
	                 }
	               }
	               if (((String)event.arg).equals("Save")) {
	                  controlRunStep();
	                  if (!alreadySaved) {
	                      StatusLine.setText("Insert file name to save PetriNet to...");
	                      Save.show();
	                      OutputFile = Save.getFile();
	                      try {
	                          a = OutputFile.length();
	                          OutputPath = Save.getDirectory() + OutputFile;
	                          Save.setFile(OutputFile);
	                          if (savePN(true)) {
	                              alreadySaved = true;
	                              StatusLine.setText("PetriNet saved.");
	                          } else alreadySaved = false;
	                      }
	                      catch (NullPointerException n) {
	                          StatusLine.setText("Sorry, there was a problem...");
	                      }
	                  } else {
	                      if (savePN(true)) {
	                           alreadySaved = true;
	                           StatusLine.setText("Petri Net saved.");
	                      } else alreadySaved = false;
	                  }
	               }
	               if (((String)event.arg).equals("Save As...")) {
	                  controlRunStep();
	                  Save.show();
	                  OutputFile = Save.getFile();
	                  try {
	                      a = OutputFile.length();
	                      OutputPath = Save.getDirectory() + OutputFile;
	                      Save.setFile(OutputFile);
	                      if (savePN(false)) {
	                          alreadySaved = true;
	                          StatusLine.setText("Petri Net saved.");
	                      } else alreadySaved = false;
	                  }
	                  catch (NullPointerException n) {
	                      StatusLine.setText("No file selected.");
	                  }
	               }
	               if (((String)event.arg).equals("Commands")) {
	                  if (HelpCom == null) {
	                     try {
	                        HelpCom = new HelpBox(Docbase);
	                     }
	                     catch (IOException e) {
	                        StatusLine.setText("Can't find file \"Helpme.doc\"");
	                     }
	                  }
	                  if (HelpCom != null) HelpCom.show();
	               }
	               if (((String)event.arg).equals("About")) {
	                  if (HelpAb == null) {
	                     HelpAb = new HelpAbout(this);
	                  }
	                  HelpAb.show();
	               }
	               if (((String)event.arg).equals("Options")) {
	                  if (ShowOp == null) {
	                     ShowOp = new ShowDialog(this);
	                  }
	                  ShowOp.setDelay(runDelay);
	                  ShowOp.setDemo(demo);
	                  controlRunStep();
	                  ShowOp.show();
	               }

	       		} // end if CheckboxMenuItem
	         } /* end if menuitem */

	         return super.handleEvent(event);

/*	      case Event.WINDOW_DESTROY:
	         if (AppletState) {
	            this.hide();
	         } else {
	            System.exit(0);
	         }
	         return true;

	      default:
	      return super.handleEvent(event);
*/	      
	}

}
	
//
//	
//	   
//
//

class OverwriteDialog extends Dialog {

    boolean yes;
    Button Yes, No;
    Thread th;
    SavePetriNet Save;
    pn PNet;


    public OverwriteDialog(Frame par, String title, SavePetriNet s, pn PN) {
        super(par, "Really..?", true);
        yes = false;
        PNet = PN;
        Save = s;
        this.setLayout(new BorderLayout(15,15));
        Label text = new Label(title);
        Panel p1 = new Panel();
        p1.setLayout(new FlowLayout(FlowLayout.CENTER));
        p1.add(text);
        this.add("Center", p1);
        Yes = new Button("Yes");
        No = new Button("No");
        Panel p2 = new Panel();
        p2.setLayout(new FlowLayout(FlowLayout.CENTER));
        p2.add(Yes);
        p2.add(No);
        this.add("South", p2);
        this.setResizable(false);
        move(par.location().x + 50, par.location().y + 50);
        this.pack();
    }
    
    public boolean action(Event e, Object arg) {
        if (e.target == Yes) {
            try {
                   Save.deleteFile();
                   Save.saveNet(PNet);
                }
                catch (IOException i) {
                }
                catch (SecurityException s) {
                    (new SorryDialog((Editor)this.getParent())).show();
                }
            this.hide();
            yes = true;
            return true;
        } else if (e.target == No) {
                this.hide();
                yes = false;
                ((Editor)this.getParent()).setAlreadySaved(false);
                return true;
            } else return false;
    }

    public boolean getDecision() {
        return yes;
    }
}

class SorryDialog extends Dialog {

    Button OK;

    public SorryDialog(Frame parent) {

        super(parent, "PNS-Message", true);
        this.setLayout(new BorderLayout(15,15));
        Panel p1 = new Panel();
        p1.setLayout(new GridLayout(0,1));
        p1.add(new Label("Sorry, you called jPNS as an applet!", Label.CENTER));
        p1.add(new Label(""));
        p1.add(new Label("It is restricted for applets to load or save", Label.CENTER));
        p1.add(new Label("to the local disk. For these features please try", Label.CENTER));
        p1.add(new Label("to run jPNS within the appletviewer", Label.CENTER));
        p1.add(new Label("or better as the application version", Label.CENTER));
        this.add("Center", p1);
        OK = new Button("OK");
        Panel p2 = new Panel();
        p2.setLayout(new FlowLayout(FlowLayout.CENTER, 15, 15));
        p2.add(OK);
        this.add("South", p2);
        this.setResizable(false);
        this.pack();
        move(parent.location().x + 50, parent.location().y + 50);
    }

    public boolean action(Event e, Object arg) {
        if (e.target == OK) {
            this.hide();
            this.dispose();
            return true;
        } else return false;
    }

}

⌨️ 快捷键说明

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