/* * Copyright (c) 1998-2009, The University of Sheffield. * * This file is part of GATE (see http://gate.ac.uk/), and is free * software, licenced under the GNU Library General Public License, * Version 2, June 1991 (in the distribution as file licence.html, * and also available at http://gate.ac.uk/gate/licence.html). * * Johann Petrak 2009-08-13 * * $Id: GUILoadOptionsPane.java 11598 2009-10-13 13:44:17Z johann_p $ */ package gate.creole.ontology.impl.sesame; import gate.creole.ontology.OConstants; import gate.creole.ontology.OConstants.OntologyFormat; import gate.gui.MainFrame; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JTextField; /** * Class for creating and showing the load ontology dialog. * This class creates the dialog pane for specifying the file name, * format, and other relevant options for laoding an ontology from a file. * * @author Johann Petrak */ public class GUILoadOptionsPane extends JPanel { static final long serialVersionUID = 1L; public GUILoadOptionsPane() { super(new GridBagLayout()); init(); } private JComboBox formatChooser; private JTextField loadFileField; private JTextField baseURIField; private JCheckBox asImport; private JCheckBox loadImports; private JTextField importMappingsFileField; private File theFile; private File theMappingsFile; private void init() { // Columns for the gridbag layout: // 4 for the label // 6 for the input/selection // 1 for the button // First row ------------------------- GridBagConstraints constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 0; constraints.gridwidth = 4; constraints.anchor = GridBagConstraints.WEST; constraints.fill = GridBagConstraints.NONE; constraints.insets = new Insets(0, 0, 0, 0); this.add(new JLabel("Load from file:"), constraints); loadFileField = new JTextField("", 20); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 0; constraints.gridwidth = 6; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.insets = new Insets(0, 10, 0, 10); this.add(loadFileField, constraints); JButton btnChooseFile = new JButton("Select"); btnChooseFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JFileChooser fileChooser = MainFrame.getFileChooser(); fileChooser.setMultiSelectionEnabled(false); fileChooser.setFileSelectionMode(JFileChooser.OPEN_DIALOG); fileChooser.setDialogTitle("Specify file to load/import the ontology from"); fileChooser.setSelectedFiles(null); int res = fileChooser.showDialog(null, "Choose"); if (res == JFileChooser.APPROVE_OPTION) { loadFileField.setText(fileChooser.getSelectedFile().getAbsolutePath()); } } }); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 0; constraints.gridwidth = 1; constraints.anchor = GridBagConstraints.NORTHWEST; this.add(btnChooseFile, constraints); //btnChooseFile.setBorderPainted(false); //btnChooseFile.setContentAreaFilled(false); // Second row ------------------------ formatChooser = new JComboBox(OntologyFormat.values()); formatChooser.setToolTipText("Select the format of the file"); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 1; constraints.gridwidth = 4; constraints.anchor = GridBagConstraints.WEST; constraints.fill = GridBagConstraints.NONE; constraints.insets = new Insets(0, 0, 0, 0); this.add(new JLabel("File format:"), constraints); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 1; constraints.gridwidth = 6; constraints.anchor = GridBagConstraints.WEST; constraints.fill = GridBagConstraints.NORTHWEST; constraints.insets = new Insets(5, 10, 10, 10); this.add(formatChooser, constraints); // Third row: baseURI ------------------------ constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 2; constraints.gridwidth = 4; constraints.anchor = GridBagConstraints.WEST; constraints.fill = GridBagConstraints.NONE; constraints.insets = new Insets(0, 0, 0, 0); this.add(new JLabel("Base URI:"), constraints); baseURIField = new JTextField("", 20); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 2; constraints.gridwidth = 6; constraints.fill = GridBagConstraints.NORTHWEST; constraints.insets = new Insets(0, 10, 0, 10); this.add(baseURIField, constraints); // TODO: check if handling of default works correctly here! //baseURIField.setText(""); // Fourth row: asImport checkbox ------------------------ asImport = new JCheckBox(""); asImport.setSelected(false); asImport.setToolTipText("Check to load this file as an import"); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 3; constraints.gridwidth = 4; constraints.anchor = GridBagConstraints.WEST; constraints.fill = GridBagConstraints.NONE; constraints.anchor = GridBagConstraints.WEST; constraints.insets = new Insets(0, 0, 0, 0); this.add(new JLabel("Load as import:"), constraints); baseURIField = new JTextField("", 20); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 3; constraints.gridwidth = 6; constraints.fill = GridBagConstraints.NORTHWEST; constraints.anchor = GridBagConstraints.WEST; constraints.insets = new Insets(0, 10, 0, 10); this.add(asImport, constraints); // Fifth row: asImport checkbox ------------------------ loadImports = new JCheckBox(""); loadImports.setSelected(false); loadImports.setToolTipText("Check to also load imports specified in the ontology"); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 4; constraints.gridwidth = 4; constraints.anchor = GridBagConstraints.WEST; constraints.fill = GridBagConstraints.NONE; constraints.anchor = GridBagConstraints.WEST; constraints.insets = new Insets(0, 0, 0, 0); this.add(new JLabel("Automatically load imports:"), constraints); baseURIField = new JTextField("", 20); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 4; constraints.gridwidth = 6; constraints.fill = GridBagConstraints.NORTHWEST; constraints.anchor = GridBagConstraints.WEST; constraints.insets = new Insets(0, 10, 0, 10); this.add(loadImports, constraints); loadImports.setSelected(true); // Fifth row: import mappings file ------------------------ constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 5; constraints.gridwidth = 4; constraints.anchor = GridBagConstraints.WEST; constraints.fill = GridBagConstraints.NONE; constraints.insets = new Insets(0, 0, 0, 0); this.add(new JLabel("File containing import mappings:"), constraints); JButton btnChooseMappingsFile = new JButton("Select"); btnChooseMappingsFile.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JFileChooser fileChooser = MainFrame.getFileChooser(); fileChooser.setMultiSelectionEnabled(false); fileChooser.setFileSelectionMode(JFileChooser.OPEN_DIALOG); fileChooser.setDialogTitle("Specify file containing import mappings"); fileChooser.setSelectedFiles(null); int res = fileChooser.showDialog(null, "Choose"); if (res == JFileChooser.APPROVE_OPTION) { importMappingsFileField.setText(fileChooser.getSelectedFile().getAbsolutePath()); } } }); importMappingsFileField = new JTextField("", 20); importMappingsFileField.setToolTipText("Select a file that contains import mappigns (optional)"); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 5; constraints.gridwidth = 6; constraints.fill = GridBagConstraints.NORTHWEST; constraints.insets = new Insets(0, 10, 0, 10); this.add(importMappingsFileField, constraints); constraints = new GridBagConstraints(); constraints.gridx = GridBagConstraints.RELATIVE; constraints.gridy = 5; constraints.gridwidth = 1; constraints.anchor = GridBagConstraints.NORTHWEST; this.add(btnChooseMappingsFile, constraints); } /** * Show the options pane as a OptionDialog, if the user chooses OK, * verify that the file name for loading is not empty and corresponds * to an existing file. * * @return */ public boolean showOptionDialog() { MainFrame instance = MainFrame.getInstance(); theFile = null; while (true) { int returnValue = JOptionPane.showOptionDialog(instance, this, "SearchableDataStore", JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION, MainFrame.getIcon("empty"), new String[]{"OK", "Cancel"}, "OK"); if (returnValue == JOptionPane.OK_OPTION) { String name = loadFileField.getText(); if ( // name.isEmpty() -- does not work in java 1.5 name.length() == 0 ) { JOptionPane.showMessageDialog(instance, new JLabel("Please specify a file for loading/importing the ontology"), "Error", JOptionPane.ERROR_MESSAGE); continue; } theFile = new File(name); if (!theFile.exists()) { JOptionPane.showMessageDialog(instance, new JLabel("The ontology file " + theFile.getAbsolutePath() + " was not found"), "Error", JOptionPane.ERROR_MESSAGE); continue; } if ( // !importMappingsFileField.getText().isEmpty() -- does not work in Java 1.5 importMappingsFileField.getText().length() != 0 ) { theMappingsFile = new File(importMappingsFileField.getText()); if (!theMappingsFile.exists()) { JOptionPane.showMessageDialog(instance, new JLabel("The mappings file " + theMappingsFile.getAbsoluteFile() + " was not found"), "Error", JOptionPane.ERROR_MESSAGE); continue; } } else { theMappingsFile = null; } return true; } return false; } } /** * Return the file specified by the user * @return the File objects corresponding to the file chosen by the user */ public File getFile() { return theFile; } /** * Return the file format chosen by the user * @return the OntologyFormat chosen by the user */ public OConstants.OntologyFormat getFormat() { int selected = formatChooser.getSelectedIndex(); return OntologyFormat.values()[selected]; } /** * Return the basURI specified by the user. * @return a String that contains the baseURI specified by the user or * null if no baseURI was specified. */ public String getBaseURI() { return baseURIField.getText(); } /** * Return the import mappings file specified by the user. * @return a File object that corresponds to the mappings file chosen * by the user or null if no file was chosen. */ public File getMappingsFile() { return theMappingsFile; } /** * Return a flag that indicates if the loaded file should be loaded as * an imported ontology. * @return a boolean indicating if the file should be loaded as an imported * ontology. */ public boolean getAsImport() { return asImport.isSelected(); } /** * Return a flag that indicates if imports specified in the loaded ontology * should automatically be loaded too. * @return a boolean indicating if imports should be resolved */ public boolean getLoadImports() { return loadImports.isSelected(); } }