/**
*
*/
package org.hyperdata.scute.toolbars.file;
import java.awt.Frame;
import javax.swing.JOptionPane;
import org.hyperdata.scute.cards.Card;
import org.hyperdata.scute.cards.CardsPanel;
import org.hyperdata.scute.demos.ExploreEditDemo;
import org.hyperdata.scute.rdf.ModelContainer;
import org.hyperdata.scute.source.TextContainer;
import org.hyperdata.scute.system.panels.LogPane;
/**
* @author danny
*
*/
public class IO implements FilesInterface {
private Frame frame = null;
private SaveDialog saveDialog = null;
private OpenDialog openDialog = null;
private ModelContainer modelContainer;
private CardsPanel cardsPanel;
public IO(ModelContainer modelContainer, CardsPanel cardsPanel) { // don't
// like
// that
// cardsPanel
// this.frame = frame;
this.modelContainer = modelContainer;
this.cardsPanel = cardsPanel;
}
/**
* @param exploreEditDemo
*/
public IO(ExploreEditDemo exploreEditDemo) {
// TODO Auto-generated constructor stub
}
@Override
public void open() {
if (modelContainer.getModelURI() == null
&& modelContainer.getModelFilename() == null) { // never been
// saved
JOptionPane.showMessageDialog(frame,
"Please save current Working Graph");
saveAs();
} else {
save();
}
try {
if (openDialog == null) {
openDialog = new OpenDialog(frame);
}
openDialog.pack();
openDialog.setVisible(true);
} catch (final Exception exception) {
System.out.println("Open aborted");
return;
}
String filename = openDialog.getFilename();
if (filename != null) {
if (filename.endsWith(".rdf") || filename.endsWith(".xml")) {
// probably RDF/XML
cardsPanel.setCurrentCard("RDF/XML");
} else {
cardsPanel.setCurrentCard("Turtle");
}
// cardsPanel.listCards();
TextContainer textContainer = cardsPanel.getCurrentCard()
.getTextContainer();
// will either be RDF/XML or Turtle
textContainer.setFilename(filename);
textContainer.load();
// setModelFilename(filename);
// loadModelFromFile();
LogPane.println("Loaded file " + filename);
} else {
String uri = openDialog.getURI();
if (uri != null) {
modelContainer.setModelURI(uri);
modelContainer.loadNamedModel();
LogPane.println("Loaded model from " + uri);
}
}
System.out.println("Loaded");
// turtlePanel.loadModel(Models.workingModel);
// rdfxmlPanel.loadModel(Models.workingModel);
//
// treePanel.loadModel(Models.workingModel);
// treePanel.init();
//
// graphPanel.loadModel(Models.workingModel);
}
@Override
public void saveAs() {
try {
if (saveDialog == null) {
saveDialog = new SaveDialog(frame);
}
saveDialog.pack();
saveDialog.setVisible(true);
} catch (final Exception exception) {
System.out.println("Export aborted");
return;
}
String filename = saveDialog.getFilename();
if (filename != null) {
Card card = cardsPanel.getCurrentCard();
if (card.isTextCard()) {
TextContainer textContainer = card.getTextContainer();
// will be RDF/XML, Turtle or SPARQL
textContainer.setFilename(filename);
textContainer.save();
} else {
modelContainer.setModelFilename(filename);
modelContainer.saveModelToFile();
}
}
String uri = saveDialog.getURI();
if (uri != null) {
modelContainer.setModelURI(uri);
modelContainer.storeNamedModel();
}
}
@Override
public void save() {
if (modelContainer.getModelURI() == null
&& modelContainer.getModelFilename() == null) {
saveAs();
return;
}
if (modelContainer.getModelURI() != null) {
modelContainer.storeNamedModel();
}
if (modelContainer.getModelFilename() != null) {
modelContainer.saveModelToFile();
}
Card card = cardsPanel.getCurrentCard();
if (card.isTextCard()) {
if (card.getTextContainer().getFilename() != null) {
card.getTextContainer().save();
} else {
saveAs();
return;
}
}
}
@Override
public void cloneFile() {
throw new RuntimeException("not yet implemented");
}
@Override
public void closeFile() {
throw new RuntimeException("not yet implemented");
}
/*
* (non-Javadoc)
*
* @see org.hyperdata.scute.swing.ToolsInterface#exit()
*/
@Override
public void exit() {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see org.hyperdata.scute.swing.ToolsInterface#newModel()
*/
@Override
public void newFile() {
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see org.hyperdata.scute.swing.ToolsInterface#getFrame()
*/
@Override
public Frame getFrame() {
// TODO Auto-generated method stub
return null;
}
}