001 /**
002 * Copyright (C) 2007-2008, Jens Lehmann
003 *
004 * This file is part of DL-Learner.
005 *
006 * DL-Learner is free software; you can redistribute it and/or modify
007 * it under the terms of the GNU General Public License as published by
008 * the Free Software Foundation; either version 3 of the License, or
009 * (at your option) any later version.
010 *
011 * DL-Learner is distributed in the hope that it will be useful,
012 * but WITHOUT ANY WARRANTY; without even the implied warranty of
013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014 * GNU General Public License for more details.
015 *
016 * You should have received a copy of the GNU General Public License
017 * along with this program. If not, see <http://www.gnu.org/licenses/>.
018 *
019 */
020
021 package org.dllearner.tools.ore;
022
023 import java.awt.BorderLayout;
024 import java.awt.GridLayout;
025 import java.awt.event.ActionListener;
026 import java.io.File;
027
028 import javax.swing.Box;
029 import javax.swing.ButtonGroup;
030 import javax.swing.GroupLayout;
031 import javax.swing.JButton;
032 import javax.swing.JFileChooser;
033 import javax.swing.JLabel;
034 import javax.swing.JPanel;
035 import javax.swing.JRadioButton;
036 import javax.swing.JTextField;
037 import javax.swing.SwingConstants;
038 import javax.swing.border.TitledBorder;
039 import javax.swing.event.DocumentListener;
040 import javax.swing.filechooser.FileFilter;
041
042 /**
043 * Wizard panel where radio buttons for choosing knowledge source type, button for browsing
044 * file system and textfields for inserting file name or SPARQL-URL are added.
045 * @author Lorenz Buehmann
046 *
047 */
048 public class KnowledgeSourcePanel extends JPanel{
049
050 private static final long serialVersionUID = -3997200565180270088L;
051 private javax.swing.JTextField fileURL;
052 private JTextField sparqlURL;
053 private JButton browseButton;
054 private JButton connectButton;
055
056 // private JComboBox sparqlBox;
057
058 private JPanel contentPanel;
059
060 private JLabel owlMessage;
061 private JLabel sparqlMessage;
062
063 private JRadioButton owl;
064 private JRadioButton sparql;
065
066
067 public KnowledgeSourcePanel() {
068
069 new LeftPanel(1);
070 contentPanel = getContentPanel();
071
072 setLayout(new java.awt.BorderLayout());
073
074 add(contentPanel,BorderLayout.CENTER);
075
076 }
077
078 private JPanel getContentPanel() {
079
080 JPanel contentPanel1 = new JPanel();
081
082 JPanel buttonPanel = new JPanel();
083 ButtonGroup bg = new ButtonGroup();
084 Box box = Box.createVerticalBox();
085 owl = new JRadioButton("OWL", true);
086 sparql = new JRadioButton("SPARQL");
087 bg.add(owl);
088 bg.add(sparql);
089 box.add(owl);
090 box.add(sparql);
091 buttonPanel.add(box);
092
093 JPanel owlPanel = new JPanel();
094 GroupLayout layout = new GroupLayout(owlPanel);
095 owlPanel.setLayout(layout);
096 layout.setAutoCreateGaps(true);
097 layout.setAutoCreateContainerGaps(true);
098 owlPanel.setBorder(new TitledBorder("OWL"));
099 owlMessage = new JLabel();
100 owlMessage.setText("enter or browse OWL file");
101 fileURL = new javax.swing.JTextField(60);
102 browseButton = new javax.swing.JButton("browse");
103 layout.setHorizontalGroup(layout.createSequentialGroup()
104 .addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
105 .addComponent(fileURL)
106 .addComponent(owlMessage))
107 .addComponent(browseButton));
108 layout.linkSize(SwingConstants.HORIZONTAL, fileURL, owlMessage);
109
110 layout.setVerticalGroup(layout.createSequentialGroup()
111 .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
112 .addComponent(fileURL)
113 .addComponent(browseButton))
114
115 .addComponent(owlMessage));
116
117
118 JPanel sparqlPanel = new JPanel();
119 GroupLayout sparqlLayout = new GroupLayout(sparqlPanel);
120 sparqlPanel.setLayout(sparqlLayout);
121 sparqlLayout.setAutoCreateGaps(true);
122 sparqlLayout.setAutoCreateContainerGaps(true);
123 sparqlPanel.setBorder(new TitledBorder("SPARQL"));
124 sparqlMessage = new JLabel();
125 sparqlMessage.setText("enter SPARQL-URL and press connect");
126 sparqlMessage.setVisible(false);
127 sparqlURL = new JTextField(60);
128 sparqlURL.setEnabled(false);
129
130 // Vector<URL> model = new Vector<URL>();
131 // for(SparqlEndpoint e : SparqlEndpoint.listEndpoints())
132 // model.add(e.getURL());
133 // sparqlBox = new JComboBox(model);
134 // sparqlBox.setEditable(false);
135 // sparqlBox.setSelectedIndex(-1);
136 // sparqlBox.setEnabled(false);
137 // sparqlPanel.add(sparqlURL);
138 connectButton = new javax.swing.JButton("connect");
139 sparqlLayout.setHorizontalGroup(sparqlLayout.createSequentialGroup()
140 .addGroup(sparqlLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
141 .addComponent(sparqlURL)
142 .addComponent(sparqlMessage))
143 .addComponent(connectButton));
144 sparqlLayout.linkSize(SwingConstants.HORIZONTAL, sparqlURL, sparqlMessage);
145
146 sparqlLayout.setVerticalGroup(sparqlLayout.createSequentialGroup()
147 .addGroup(sparqlLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
148 .addComponent(sparqlURL)
149 .addComponent(connectButton))
150
151 .addComponent(sparqlMessage));
152
153
154 contentPanel1.setLayout(new GridLayout(0, 1));
155 contentPanel1.add(buttonPanel);
156 contentPanel1.add(owlPanel);
157 contentPanel1.add(sparqlPanel);
158
159
160
161 return contentPanel1;
162 }
163
164 public void addListeners(ActionListener l, DocumentListener d) {
165 browseButton.addActionListener(l);
166 fileURL.addActionListener(l);
167 sparqlURL.addActionListener(l);
168 owl.addActionListener(l);
169 sparql.addActionListener(l);
170 fileURL.getDocument().addDocumentListener(d);
171 }
172
173
174
175 public void openFileChooser(){
176 JFileChooser filechooser = new JFileChooser();
177
178 filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
179 String choosenPath = fileURL.getText();
180 if(!choosenPath.equals("") && (new File(choosenPath)).exists()){
181 filechooser.setCurrentDirectory(new File(fileURL.getText()));
182 }
183
184 filechooser.addChoosableFileFilter(new FileFilter() {
185 @Override
186 public boolean accept(File f) {
187 if(f.isDirectory()){
188 return true;
189 }
190 return f.getName().toLowerCase().endsWith(".owl");
191 }
192 @Override
193 public String getDescription(){
194 return "OWLs";
195 }
196 });
197 int status = filechooser.showOpenDialog(null);
198
199 if (status == JFileChooser.APPROVE_OPTION){
200 String strURL = filechooser.getSelectedFile().getAbsolutePath();
201 fileURL.setText(strURL);
202
203
204
205 } else{
206 System.out.println("Auswahl abgebrochen");
207 }
208 }
209
210 public boolean isExistingOWLFile(){
211 if(!fileURL.getText().equals("") && !getOWLFile().exists()){
212
213 owlMessage.setText(fileURL.getText()+" does not exist");
214 return false;
215 }
216 if(!fileURL.getText().equals("") && (getOWLFile().isDirectory() || (getOWLFile().isFile() && !getOWLFile().getPath().endsWith(".owl")))){
217 System.err.println(getOWLFile().getPath());
218 owlMessage.setText(fileURL.getText()+" is not a OWL file");
219 return false;
220 }
221 if(fileURL.getText().equals("")){
222 owlMessage.setText("enter or browse OWL file");
223 return false;
224 }
225 if(getOWLFile().exists() && getOWLFile().getPath().endsWith(".owl")){
226 owlMessage.setText("");
227 return true;
228 }
229 return true;
230
231
232
233 }
234
235 public File getOWLFile() {
236 return new File(fileURL.getText());
237 }
238
239 public void setFileURL(String fileURL){
240 this.fileURL.setText(fileURL);
241 }
242
243 public void setOWLMode(){
244 fileURL.setEnabled(true);
245 browseButton.setEnabled(true);
246 owlMessage.setVisible(true);
247
248 sparqlURL.setEnabled(false);
249 connectButton.setEnabled(false);
250 sparqlMessage.setVisible(false);
251 // sparqlBox.setEditable(false);
252 // sparqlBox.setEnabled(false);
253
254 }
255
256 public void setSPARQLMode(){
257 fileURL.setEnabled(false);
258 browseButton.setEnabled(false);
259 owlMessage.setVisible(false);
260
261 sparqlURL.setEnabled(true);
262 connectButton.setEnabled(true);
263 sparqlMessage.setVisible(true);
264 // sparqlBox.setEnabled(true);
265 // sparqlBox.setEditable(true);
266
267 }
268
269
270 }