use of com.cburch.logisim.file.Loader in project logisim-evolution by reds-heig.
the class ProjectActions method doMerge.
public static void doMerge(Component parent, Project baseProject) {
JFileChooser chooser;
LogisimFile mergelib;
Loader loader = null;
if (baseProject != null) {
Loader oldLoader = baseProject.getLogisimFile().getLoader();
chooser = oldLoader.createChooser();
if (oldLoader.getMainFile() != null) {
chooser.setSelectedFile(oldLoader.getMainFile());
}
} else {
chooser = JFileChoosers.create();
}
chooser.setFileFilter(Loader.LOGISIM_FILTER);
chooser.setDialogTitle(Strings.get("FileMergeItem"));
int returnVal = chooser.showOpenDialog(parent);
if (returnVal != JFileChooser.APPROVE_OPTION)
return;
File selected = chooser.getSelectedFile();
loader = new Loader(baseProject == null ? parent : baseProject.getFrame());
try {
mergelib = loader.openLogisimFile(selected);
if (mergelib == null)
return;
} catch (LoadFailedException ex) {
if (!ex.isShown()) {
JOptionPane.showMessageDialog(parent, StringUtil.format(Strings.get("fileMergeError"), ex.toString()), Strings.get("FileMergeErrorItem"), JOptionPane.ERROR_MESSAGE);
}
return;
}
updatecircs(mergelib, baseProject);
baseProject.doAction(LogisimFileActions.MergeFile(mergelib, baseProject.getLogisimFile()));
}
use of com.cburch.logisim.file.Loader in project logisim-evolution by reds-heig.
the class ProjectActions method doNew.
public static Project doNew(SplashScreen monitor, boolean isStartupScreen) {
if (monitor != null)
monitor.setProgress(SplashScreen.FILE_CREATE);
Loader loader = new Loader(monitor);
InputStream templReader = AppPreferences.getTemplate().createStream();
LogisimFile file = null;
try {
file = loader.openLogisimFile(templReader);
} catch (IOException ex) {
displayException(monitor, ex);
} catch (LoadFailedException ex) {
displayException(monitor, ex);
} finally {
try {
templReader.close();
} catch (IOException e) {
}
}
if (file == null)
file = createEmptyFile(loader, null);
return completeProject(monitor, loader, file, isStartupScreen);
}
use of com.cburch.logisim.file.Loader in project logisim-evolution by reds-heig.
the class ProjectActions method doSaveAs.
/**
* Saves a Logisim project in a .circ file.
*
* It is the action listener for the File->Save as... menu option.
*
* @param proj
* project to be saved
* @return true if success, false otherwise
*/
public static boolean doSaveAs(Project proj) {
Loader loader = proj.getLogisimFile().getLoader();
JFileChooser chooser = loader.createChooser();
chooser.setFileFilter(Loader.LOGISIM_FILTER);
if (loader.getMainFile() != null) {
chooser.setSelectedFile(loader.getMainFile());
}
int returnVal;
boolean validFilename = false;
HashMap<String, String> Error = new HashMap<String, String>();
do {
Error.clear();
returnVal = chooser.showSaveDialog(proj.getFrame());
if (returnVal != JFileChooser.APPROVE_OPTION) {
return false;
}
validFilename = checkValidFilename(chooser.getSelectedFile().getName(), proj, Error);
if (!validFilename) {
String Message = "\"" + chooser.getSelectedFile() + "\":\n";
for (String key : Error.keySet()) Message = Message.concat("=> " + Strings.get(Error.get(key)) + "\n");
JOptionPane.showMessageDialog(chooser, Message, Strings.get("FileSaveAsItem"), JOptionPane.ERROR_MESSAGE);
}
} while (!validFilename);
File f = chooser.getSelectedFile();
String circExt = Loader.LOGISIM_EXTENSION;
if (!f.getName().endsWith(circExt)) {
String old = f.getName();
int ext0 = old.lastIndexOf('.');
if (ext0 < 0 || !Pattern.matches("\\.\\p{L}{2,}[0-9]?", old.substring(ext0))) {
f = new File(f.getParentFile(), old + circExt);
} else {
String ext = old.substring(ext0);
String ttl = Strings.get("replaceExtensionTitle");
String msg = Strings.get("replaceExtensionMessage", ext);
Object[] options = { Strings.get("replaceExtensionReplaceOpt", ext), Strings.get("replaceExtensionAddOpt", circExt), Strings.get("replaceExtensionKeepOpt") };
JOptionPane dlog = new JOptionPane(msg);
dlog.setMessageType(JOptionPane.QUESTION_MESSAGE);
dlog.setOptions(options);
dlog.createDialog(proj.getFrame(), ttl).setVisible(true);
Object result = dlog.getValue();
if (result == options[0]) {
String name = old.substring(0, ext0) + circExt;
f = new File(f.getParentFile(), name);
} else if (result == options[1]) {
f = new File(f.getParentFile(), old + circExt);
}
}
}
if (f.exists()) {
int confirm = JOptionPane.showConfirmDialog(proj.getFrame(), Strings.get("confirmOverwriteMessage"), Strings.get("confirmOverwriteTitle"), JOptionPane.YES_NO_OPTION);
if (confirm != JOptionPane.YES_OPTION)
return false;
}
return doSave(proj, f);
}
use of com.cburch.logisim.file.Loader in project logisim-evolution by reds-heig.
the class ProjectActions method doOpenNoWindow.
public static Project doOpenNoWindow(SplashScreen monitor, File source) throws LoadFailedException {
Loader loader = new Loader(monitor);
LogisimFile file = loader.openLogisimFile(source);
Project ret = new Project(file);
updatecircs(file, ret);
return ret;
}
use of com.cburch.logisim.file.Loader in project logisim-evolution by reds-heig.
the class ProjectActions method doOpen.
public static boolean doOpen(Component parent, Project baseProject) {
JFileChooser chooser;
if (baseProject != null) {
Loader oldLoader = baseProject.getLogisimFile().getLoader();
chooser = oldLoader.createChooser();
if (oldLoader.getMainFile() != null) {
chooser.setSelectedFile(oldLoader.getMainFile());
}
} else {
chooser = JFileChoosers.create();
}
chooser.setFileFilter(Loader.LOGISIM_FILTER);
chooser.setDialogTitle(Strings.get("FileOpenItem"));
int returnVal = chooser.showOpenDialog(parent);
if (returnVal != JFileChooser.APPROVE_OPTION)
return false;
File selected = chooser.getSelectedFile();
if (selected != null) {
doOpen(parent, baseProject, selected);
}
return true;
}
Aggregations