323 lines
8.9 KiB
Java
323 lines
8.9 KiB
Java
|
/*
|
||
|
* To change this template, choose Tools | Templates
|
||
|
* and open the template in the editor.
|
||
|
*/
|
||
|
package eric.jobs;
|
||
|
|
||
|
import eric.FileTools;
|
||
|
import eric.GUI.palette.PaletteManager;
|
||
|
import eric.GUI.pipe_tools;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Enumeration;
|
||
|
import rene.gui.Global;
|
||
|
import rene.util.xml.XmlWriter;
|
||
|
import rene.zirkel.ZirkelCanvas;
|
||
|
import rene.zirkel.objects.ConstructionObject;
|
||
|
import rene.zirkel.tools.DefineJobTool;
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
* @author erichake
|
||
|
*/
|
||
|
public class JobManager {
|
||
|
|
||
|
ZirkelCanvas ZC;
|
||
|
private String target_names=null; // Only for loading process...
|
||
|
private ArrayList<ConstructionObject> targets=new ArrayList<ConstructionObject>();
|
||
|
private String backup=null;
|
||
|
private String message_ok=Global.getParameter("job.message.ok", Global.Loc("job.message.ok"));
|
||
|
private String message_failed=Global.getParameter("job.message.failed", Global.Loc("job.message.failed"));
|
||
|
private boolean hidefinals=false;
|
||
|
private boolean staticjob=false;
|
||
|
private JobControlPanel controlPanel=null;
|
||
|
private JobValidPanel validPanel=null;
|
||
|
private boolean printExerciseArguments=true;
|
||
|
private int ctrlX=3,ctrlY=3,ctrlW=374,ctrlH=162;
|
||
|
private int validX,validY,validW=550,validH=36;
|
||
|
|
||
|
public JobManager(ZirkelCanvas zc) {
|
||
|
ZC=zc;
|
||
|
}
|
||
|
|
||
|
public void backup() {
|
||
|
try {
|
||
|
printExerciseArguments=false; // protect from recursively get Exercise arguments
|
||
|
String file=FileTools.getCurrentFileSource();
|
||
|
printExerciseArguments=true;
|
||
|
// Compress the byte representation of the file :
|
||
|
byte[] b=StringCompressionUtils.Compress(file.getBytes());
|
||
|
// then save it into base64 format :
|
||
|
backup=new String(Base64Coder.encode(b));
|
||
|
} catch (Exception ex) {
|
||
|
System.out.println("backup error");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void restore() {
|
||
|
if (backup!=null) {
|
||
|
try {
|
||
|
String targets_backup=getTargetNames();
|
||
|
// decode the base64 representation of the compressed file :
|
||
|
byte[] b=Base64Coder.decode(backup);
|
||
|
// decompress the file :
|
||
|
byte[] b1=StringCompressionUtils.Decompress(b);
|
||
|
// restore the construction :
|
||
|
FileTools.setCurrentFileSource(new String(b1));
|
||
|
setTargets(targets_backup);
|
||
|
setTargetsColor(true);
|
||
|
setHiddenToSuperHidden();
|
||
|
|
||
|
} catch (Exception ex) {
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public ArrayList<ConstructionObject> getTargets() {
|
||
|
return targets;
|
||
|
}
|
||
|
|
||
|
public String getTargetNames() {
|
||
|
String names="";
|
||
|
for (int i=0; i<targets.size(); i++) {
|
||
|
names+=";"+targets.get(i).getName();
|
||
|
}
|
||
|
return names.replaceFirst(";", "");
|
||
|
}
|
||
|
|
||
|
/* Two methods only for loading process :
|
||
|
*
|
||
|
*/
|
||
|
public void setTargetNames(String t) {
|
||
|
target_names=t;
|
||
|
}
|
||
|
|
||
|
public void setTargets() {
|
||
|
if (target_names!=null) {
|
||
|
setTargets(target_names);
|
||
|
target_names=null;
|
||
|
setTargetsColor(true);
|
||
|
addValidPanel();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void setTargets(String t) {
|
||
|
setTargetSelected(false);
|
||
|
targets.clear();
|
||
|
String[] names=t.split(";");
|
||
|
for (int i=0; i<names.length; i++) {
|
||
|
ConstructionObject o=ZC.getConstruction().find(names[i]);
|
||
|
if (o!=null) {
|
||
|
targets.add(o);
|
||
|
}
|
||
|
}
|
||
|
setTargetSelected(true);
|
||
|
}
|
||
|
|
||
|
public void addTarget(ConstructionObject o) {
|
||
|
targets.add(o);
|
||
|
}
|
||
|
|
||
|
public void removeTarget(ConstructionObject o) {
|
||
|
targets.remove(o);
|
||
|
}
|
||
|
|
||
|
public void setTargetSelected(boolean sel) {
|
||
|
for (int i=0; i<targets.size(); i++) {
|
||
|
targets.get(i).setSelected(sel);
|
||
|
}
|
||
|
ZC.repaint();
|
||
|
}
|
||
|
|
||
|
public void setHiddenToSuperHidden() {
|
||
|
Enumeration e=ZC.getConstruction().elements();
|
||
|
while (e.hasMoreElements()) {
|
||
|
ConstructionObject c=(ConstructionObject) e.nextElement();
|
||
|
if (c.isHidden(true)) {
|
||
|
c.setSuperHidden(true);
|
||
|
}
|
||
|
}
|
||
|
ZC.reloadCD();
|
||
|
}
|
||
|
|
||
|
public void setSuperHiddenToHidden() {
|
||
|
Enumeration e=ZC.getConstruction().elements();
|
||
|
while (e.hasMoreElements()) {
|
||
|
ConstructionObject c=(ConstructionObject) e.nextElement();
|
||
|
if (c.isSuperHidden(true)) {
|
||
|
c.setSuperHidden(false);
|
||
|
c.setHidden(true);
|
||
|
}
|
||
|
}
|
||
|
ZC.reloadCD();
|
||
|
}
|
||
|
|
||
|
public void setTargetsColor(boolean select) {
|
||
|
Enumeration e=ZC.getConstruction().elements();
|
||
|
while (e.hasMoreElements()) {
|
||
|
ConstructionObject c=(ConstructionObject) e.nextElement();
|
||
|
c.setJobTarget(false);
|
||
|
}
|
||
|
for (int i=0; i<targets.size(); i++) {
|
||
|
targets.get(i).setSuperHidden(false);
|
||
|
}
|
||
|
|
||
|
if (select) {
|
||
|
for (int i=0; i<targets.size(); i++) {
|
||
|
targets.get(i).setJobTarget(true);
|
||
|
targets.get(i).setSuperHidden(hidefinals);
|
||
|
}
|
||
|
}
|
||
|
ZC.repaint();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @return the message_ok
|
||
|
*/
|
||
|
public String getMessage_ok() {
|
||
|
return message_ok;
|
||
|
}
|
||
|
|
||
|
public void setMessage_ok(String mess_ok) {
|
||
|
message_ok=mess_ok;
|
||
|
Global.setParameter("job.message.ok", message_ok);
|
||
|
}
|
||
|
|
||
|
public String getMessage_failed() {
|
||
|
return message_failed;
|
||
|
}
|
||
|
|
||
|
public void setMessage_failed(String mess_failed) {
|
||
|
message_failed=mess_failed;
|
||
|
Global.setParameter("job.message.failed", message_failed);
|
||
|
}
|
||
|
|
||
|
public boolean isStaticJob() {
|
||
|
return staticjob;
|
||
|
}
|
||
|
|
||
|
public void setStaticJob(boolean b){
|
||
|
staticjob=b;
|
||
|
}
|
||
|
|
||
|
public boolean isHidefinals() {
|
||
|
return hidefinals;
|
||
|
}
|
||
|
|
||
|
public void setHidefinals(boolean hidef) {
|
||
|
hidefinals=hidef;
|
||
|
}
|
||
|
|
||
|
public void setBackup(String s) {
|
||
|
backup=s;
|
||
|
}
|
||
|
|
||
|
public void printArgs(final XmlWriter xml) {
|
||
|
if ((targets.size()>0)&&(printExerciseArguments)) {
|
||
|
xml.startTagStart("Exercise");
|
||
|
xml.printArg("message_ok", message_ok);
|
||
|
xml.printArg("message_failed", message_failed);
|
||
|
xml.printArg("hidefinals", String.valueOf(hidefinals));
|
||
|
xml.printArg("staticjob", String.valueOf(staticjob));
|
||
|
xml.printArg("targets", getTargetNames());
|
||
|
xml.printArg("backup", backup);
|
||
|
xml.finishTagNewLine();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*******************************
|
||
|
* GUI PART :
|
||
|
*******************************/
|
||
|
public void init() {
|
||
|
if (controlPanel!=null) {
|
||
|
controlPanel.init();
|
||
|
} else if (validPanel!=null) {
|
||
|
validPanel.init(ZC.getSize().width, ZC.getSize().height);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void addControlPanel() {
|
||
|
removeControlPanel();
|
||
|
controlPanel=new JobControlPanel(this,ctrlX,ctrlY,ctrlW,ctrlH);
|
||
|
ZC.add(controlPanel,0);
|
||
|
ZC.repaint();
|
||
|
init();
|
||
|
}
|
||
|
|
||
|
public void removeControlPanel() {
|
||
|
if (controlPanel!=null) {
|
||
|
ctrlX=controlPanel.getLocation().x;
|
||
|
ctrlY=controlPanel.getLocation().y;
|
||
|
ZC.remove(controlPanel);
|
||
|
controlPanel=null;
|
||
|
ZC.repaint();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void addValidPanel() {
|
||
|
removeValidPanel();
|
||
|
if (targets.size()>0) {
|
||
|
validPanel=new JobValidPanel(this,0,0,validW,validH);
|
||
|
ZC.add(validPanel,0);
|
||
|
ZC.repaint();
|
||
|
init();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void removeValidPanel() {
|
||
|
if (validPanel!=null) {
|
||
|
ZC.remove(validPanel);
|
||
|
validPanel=null;
|
||
|
ZC.repaint();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void cancelControlDialog(){
|
||
|
hideControlDialog(false);
|
||
|
}
|
||
|
|
||
|
public void hideControlDialog(boolean createJob) {
|
||
|
setTargetSelected(false);
|
||
|
removeControlPanel();
|
||
|
pipe_tools.getContent().requestFocus();
|
||
|
if (createJob&&targets.size()>0) {
|
||
|
backup();
|
||
|
addValidPanel();
|
||
|
setHiddenToSuperHidden();
|
||
|
} else {
|
||
|
targets.clear();
|
||
|
backup=null;
|
||
|
setSuperHiddenToHidden();
|
||
|
}
|
||
|
setTargetsColor(true);
|
||
|
|
||
|
PaletteManager.ClicOn("point");
|
||
|
}
|
||
|
|
||
|
public void showControlDialog() {
|
||
|
removeValidPanel();
|
||
|
restore();
|
||
|
setTargetsColor(false);
|
||
|
setSuperHiddenToHidden();
|
||
|
addControlPanel();
|
||
|
setTargetsField();
|
||
|
setJobTool();
|
||
|
}
|
||
|
|
||
|
public void setJobTool() {
|
||
|
setTargetSelected(true);
|
||
|
PaletteManager.deselectgeomgroup();
|
||
|
ZC.setTool(new DefineJobTool());
|
||
|
}
|
||
|
|
||
|
public void setTargetsField() {
|
||
|
if (controlPanel!=null) {
|
||
|
controlPanel.setTargetslist(getTargetNames());
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public void validate() {
|
||
|
JobValidation v=new JobValidation(ZC);
|
||
|
v.checkAllsteps();
|
||
|
}
|
||
|
}
|