/*
* Scute
*
* Homepage: http://hyperdata.org/scute
*
* License : http://www.apache.org/licenses/LICENSE-2.0
* See also license.txt or http://hyperdata.org/wiki/Scute:License
*
* Danny Ayers 2011
*/
package org.hyperdata.scute.source;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.event.ChangeEvent;
import org.hyperdata.scute.autosave.UserActivityListener;
import org.hyperdata.scute.cards.CardsPanel;
import org.hyperdata.scute.main.Config;
import org.hyperdata.scute.rdf.RdfUtils;
import org.hyperdata.scute.system.Log;
import com.hp.hpl.jena.rdf.model.Model;
// JPanel
/**
* The Class SourcePanel.
*/
public class RdfSourcePanel extends EditorPane {
/**
* Adds the user activity listener.
*
* @param listener
* the listener
*/
public void addUserActivityListener(UserActivityListener listener) {
getDocument().addDocumentListener(listener);
}
/** The Constant serialVersionUID. */
private static final long serialVersionUID = -3186641002083966387L;
// String base = "http://hyperdata.org/base";
/** The model. */
private Model model;
/** The refresh button. */
private JButton refreshButton;
/** The scroll. */
protected JScrollPane scroll;
/**
* Instantiates a new source panel.
*
* @param syntax
* the syntax
*/
public RdfSourcePanel(String syntax) {
super(syntax);
}
/**
* Gets the refresh button.
*
* @return the refresh button
*/
public JButton getRefreshButton() {
return refreshButton;
}
/**
* Load model.
*
* @param workingModel
* the working model
* XXXMODEL
*/
public void loadModel(Model workingModel) {
model = workingModel;
System.out.println("SYNTAX " + getSyntax());
System.out.println("MODEL " + model);
final String text = RdfUtils.modelToString(model, getSyntax());
setText(text);
setCaretPosition(0); // scroll to top
repaint();
}
public void saveModel() { // XXXMODEL
try {
RdfUtils.save(model, Config.WORKING_MODEL_FILENAME);
} catch (IOException exception) {
Log.exception(exception);
}
}
/**
* Refresh from text.
*/
public void refreshModelFromText() {
refreshModelFromString(getText());
}
/**
* Refresh from string.
*
* @param string
* the string
*/
public void refreshModelFromString(String string) {
final Model modelCopy = model; // er - that'll be a pointer?
try {
model = RdfUtils.stringToModel(string, Config.baseUri, getSyntax());
} catch (Exception exception) {
Log.exception(exception);
model = modelCopy;
loadModel(model);
}
}
// called when tabs clicked
/*
* (non-Javadoc)
*
* @see
* javax.swing.event.ChangeListener#stateChanged(javax.swing.event.ChangeEvent
* )
*/
@Override
public void stateChanged(ChangeEvent e) {
// String currentView = getSyntax();
String view = ((CardsPanel) e.getSource()).getCurrentCardType();
// System.out.println("VIEW="+view);
// System.out.println("RdfSoucePanel view = "+view);
// save();
if (this.getSyntax().equals(view)) {
// load();
loadModel(model);
}
}
}