/** * */ package org.hyperdata.scute.sparql.panels; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.util.Arrays; import java.util.Dictionary; import java.util.Enumeration; import java.util.EventObject; import java.util.List; import javax.swing.*; import javax.swing.border.EtchedBorder; import javax.swing.text.*; //import org.hdesktop.swingx.JXMultiSplitPane; //import org.hdesktop.swingx.MultiSplitLayout; //import org.hdesktop.swingx.MultiSplitLayout.Divider; //import org.hdesktop.swingx.MultiSplitLayout.Leaf; //import org.hdesktop.swingx.MultiSplitLayout.Split; import org.jdesktop.swingx.*; import org.jdesktop.swingx.action.*; import org.jdesktop.swingx.MultiSplitLayout.*; import org.hyperdata.resources.scute.ScuteIcons; import org.hyperdata.scute.cards.Card; import org.hyperdata.scute.main.FocusMonitor; import org.hyperdata.scute.source.popup.PopupListener; import org.hyperdata.scute.source.popup.SourcePopupMenu; import org.hyperdata.scute.sparql.SparqlContainer; import org.hyperdata.scute.sparql.SparqlContainerImpl; import org.hyperdata.scute.sparql.actions.RunQueryAction; import org.hyperdata.scute.status.StatusAction; import org.hyperdata.scute.status.StatusButton; import org.hyperdata.scute.status.StatusEvent; import org.hyperdata.scute.status.StatusInfoPane; import org.hyperdata.scute.status.StatusMonitor; import org.hyperdata.scute.syntax.*; import org.hyperdata.scute.toolbars.source.EditorToolbar; import org.hyperdata.scute.toolbars.source.FindAction; import org.hyperdata.scute.validate.RdfXmlValidateAction; import org.hyperdata.scute.validate.SparqlValidateAction; /** * @author danny * * TODO make SPARQL SELECT/CONSTRUCT/DESCRIBE?/ASK? template from * current working model * */ public class SparqlCard extends Card { // implements SparqlContainer private SparqlSourcePanel sourcePanel; private SparqlResultsPanel resultsPanel; private SparqlContainer sparqlContainer = new SparqlContainerImpl(); private Frame frame; private ScuteEditorKit editorKit; private SourcePopupMenu popupMenu; public SparqlCard() { super(new BorderLayout()); sourcePanel = new SparqlSourcePanel("SPARQL"); editorKit = new ScuteEditorKit("SPARQL"); // /////////////////////// // editorKit.setSyntax("SPARQL"); sourcePanel.setEditorKit(editorKit); popupMenu = new SourcePopupMenu(sourcePanel); PopupListener popupListener = new PopupListener(popupMenu); sourcePanel.addMouseListener(popupListener); sourcePanel.loadSoon(); resultsPanel = new SparqlResultsPanel(); sparqlContainer.addSparqlListener(resultsPanel); // there's an awful lot of this... Leaf leftLeaf = new Leaf("left"); // actually upper & lower leftLeaf.setWeight(0.5); Leaf rightLeaf = new Leaf("right"); rightLeaf.setWeight(0.5); List children = Arrays.asList(leftLeaf, new Divider(), rightLeaf); Split splitModel = new Split(); splitModel.setChildren(children); splitModel.setRowLayout(false); // column MultiSplitLayout multiSplitLayout = new MultiSplitLayout(); multiSplitLayout.setLayoutMode(MultiSplitLayout.NO_MIN_SIZE_LAYOUT); JXMultiSplitPane multiSplitPane = new JXMultiSplitPane(multiSplitLayout); multiSplitPane.getMultiSplitLayout().setModel(splitModel); multiSplitPane.add(new JScrollPane(sourcePanel), "left"); multiSplitPane.add(resultsPanel, "right"); add(multiSplitPane, BorderLayout.CENTER); // need to set up autosave button // add time taken status? // Set up validator Document sparqlDocument = sourcePanel.getDocument(); SparqlValidateAction sparqlValidateAction = new SparqlValidateAction(sparqlDocument); // passing sourcepanel here a bit messy, but will do for now SparqlRunToolbar runToolbar = new SparqlRunToolbar(sparqlContainer, sourcePanel, sparqlValidateAction.getValidator(), frame); add(runToolbar, BorderLayout.NORTH); SparqlStatusPanel statusPanel = new SparqlStatusPanel(sparqlValidateAction); runToolbar.addStatusChangeListener(statusPanel); add(statusPanel, BorderLayout.SOUTH); } /** * @param args */ public static void main(String[] args) { // final JFrame frame = new JFrame(); // SparqlCard sparqlPanel = new SparqlCard(frame, null); // frame.setSize(800, 600); // frame.add(sparqlPanel); // frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); // // frame.pack(); // frame.setVisible(true); } /** * @param frame2 */ public void setFrame(JFrame frame) { this.frame = frame; } /** * @param focusMonitor */ public void addFocusMonitor(FocusMonitor focusMonitor) { sourcePanel.addFocusListener(focusMonitor); resultsPanel.addFocusListener(focusMonitor); } }