/** * */ package org.hyperdata.scute.sparql.panels; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Cursor; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; import javax.swing.border.EtchedBorder; import org.hyperdata.resources.scute.ScuteIcons; import org.hyperdata.scute.sparql.SparqlContainer; import org.hyperdata.scute.sparql.actions.RunQueryAction; import org.hyperdata.scute.sparql.endpoints.EditEndpointsAction; import org.hyperdata.scute.sparql.endpoints.Endpoint; import org.hyperdata.scute.sparql.endpoints.EndpointListModel; import org.hyperdata.scute.sparql.endpoints.EndpointTableModel; import org.hyperdata.scute.status.StatusAction; import org.hyperdata.scute.status.StatusButton; import org.hyperdata.scute.status.StatusChangeListener; import org.hyperdata.scute.status.StatusEvent; import org.hyperdata.scute.status.StatusMonitor; import org.hyperdata.scute.validate.SparqlValidateAction; import org.hyperdata.scute.validate.Validator; /** * @author danny * * TODO refactor messy passing of stuff to RunQueryAction */ public class SparqlRunToolbar extends JPanel implements ActionListener { private JComboBox endpointsBox; private JTextField uriField; private SparqlContainer queryContainer; private SparqlSourcePanel sourcePanel; private Frame frame; private Validator validator; private StatusAction runQueryAction; public SparqlRunToolbar(SparqlContainer queryContainer, SparqlSourcePanel sourcePanel, Validator validator, Frame frame) { super(); setLayout(new BoxLayout(this, BoxLayout.LINE_AXIS)); setBorder(BorderFactory.createEtchedBorder(EtchedBorder.RAISED)); this.frame = frame; this.validator = validator; this.queryContainer = queryContainer; this.sourcePanel = sourcePanel; // // a bit messy, lots of backrefs, but will do for now runQueryAction = new RunQueryAction(this); // frame, "Run", queryContainer, sourcePanel, validator // runQueryAction.addStatusChangeListener(this); ************************************************** String[] labels = { "Error", "Stop", "Run" }; String[] descriptions = { "Error, check log", "Running...", "Run" }; ImageIcon[] icons = { ScuteIcons.errorIcon, ScuteIcons.stopIcon, ScuteIcons.sparqlIcon }; StatusButton runQueryButton = new StatusButton(runQueryAction, labels, descriptions, icons); runQueryButton.setStatus(StatusMonitor.GREEN); runQueryButton.setHorizontalTextPosition(SwingConstants.LEFT); runQueryButton.setHorizontalAlignment(SwingConstants.RIGHT); // doesn't appear to work! runQueryButton.setToolTipText("Run query"); EndpointListModel endpointListModel = new EndpointListModel(); endpointsBox = new JComboBox(endpointListModel); endpointsBox.setSelectedIndex(0); endpointsBox.addActionListener(this); endpointsBox.setToolTipText("Choose endpoint"); uriField = new JTextField(20); uriField.setText("----"); uriField.setToolTipText("Endpoint URI"); JButton editButton = new JButton(); EndpointTableModel endpointTableModel = new EndpointTableModel(endpointListModel); editButton.setAction(new EditEndpointsAction("Endpoint:", endpointTableModel, frame)); editButton.setToolTipText("Add to/remove from list"); add(runQueryButton); // add(Box.createHorizontalStrut(5)); add(new JSeparator(SwingConstants.VERTICAL)); add(Box.createHorizontalStrut(5)); // add(new JLabel("Endpoint:")); add(editButton); add(Box.createHorizontalStrut(5)); add(endpointsBox); add(uriField); } public void setCursor(Cursor cursor){ super.setCursor(cursor); sourcePanel.setCursor(cursor); } /* * (non-Javadoc) * * @see * java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ @Override public void actionPerformed(ActionEvent arg0) { // String selected = (String)comboBox.getSelectedItem(); Endpoint endpoint = (Endpoint) endpointsBox.getSelectedItem(); String uri = endpoint.getUri(); if (uri != null) { uriField.setText(uri); } else { uriField.setText("---"); } // System.out.println("ENDPOINT ST=" + endpoint); queryContainer.setEndpoint(endpoint); } /** * @return */ public Validator getValidator() { return validator; } /** * @return */ public Frame getFrame() { return frame; } /** * */ public void initSparqlContainer() { queryContainer.setQueryString(sourcePanel.getText()); Endpoint endpoint = (Endpoint) endpointsBox.getSelectedItem(); queryContainer.setEndpoint(endpoint); } /** * @return */ public SparqlContainer getSparqlContainer() { return queryContainer; } /** * @param sparqlCard */ public void addStatusChangeListener(StatusChangeListener listener) { runQueryAction.addStatusChangeListener(listener); } }