corpus-services  1.0
ApplicationFrame.java
Go to the documentation of this file.
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5 
6  /*
7  * ApplicationFrame.java
8  *
9  * Created on 21.09.2010, 10:53:59
10  */
11 package de.uni_hamburg.corpora.swing;
12 
20 import java.awt.BorderLayout;
21 import java.awt.Color;
22 import java.awt.Desktop;
23 import java.io.File;
24 import java.io.FileFilter;
25 import java.io.FileOutputStream;
26 import java.io.FilenameFilter;
27 import java.io.IOException;
28 import java.net.MalformedURLException;
29 import java.net.URI;
30 import java.net.URISyntaxException;
31 import java.net.URL;
32 import java.nio.file.Paths;
33 import java.util.ArrayList;
34 import java.util.Arrays;
35 import java.util.Collection;
36 import java.util.List;
37 import java.util.Vector;
38 import java.util.logging.Level;
39 import java.util.logging.Logger;
40 import javax.swing.DefaultListModel;
41 import javax.swing.ImageIcon;
42 import javax.swing.JDialog;
43 import javax.swing.JFileChooser;
44 import javax.swing.JOptionPane;
45 import javax.swing.JScrollPane;
46 import javax.swing.JTextPane;
47 import javax.swing.SwingUtilities;
48 import javax.swing.WindowConstants;
49 import javax.swing.border.LineBorder;
50 import javax.swing.text.BadLocationException;
51 import javax.swing.text.Style;
52 import javax.swing.text.StyleConstants;
53 import javax.swing.text.StyledDocument;
54 import org.exmaralda.folker.utilities.HTMLDisplayDialog;
55 import org.exmaralda.partitureditor.jexmaralda.JexmaraldaException;
56 //import org.exmaralda.common.jdomutilities.IOUtilities;
57 //import org.exmaralda.folker.utilities.HTMLDisplayDialog;
58 //import org.exmaralda.partitureditor.fsm.FSMException;
59 //import org.exmaralda.partitureditor.jexmaralda.BasicTranscription;
60 //import org.exmaralda.partitureditor.jexmaralda.convert.CHATConverter;
61 //import org.exmaralda.partitureditor.jexmaralda.convert.ELANConverter;
62 //import org.exmaralda.partitureditor.jexmaralda.convert.StylesheetFactory;
63 //import org.exmaralda.partitureditor.jexmaralda.convert.TEIConverter;
64 //import org.exmaralda.partitureditor.jexmaralda.convert.TranscriberConverter;
65 //import org.exmaralda.partitureditor.partiture.BrowserLauncher;
66 import org.jdom.Document;
67 import org.jdom.JDOMException;
68 import org.jdom.output.Format;
69 import org.jdom.output.XMLOutputter;
70 import org.xml.sax.SAXException;
71 
76 public class ApplicationFrame extends javax.swing.JFrame {
77 
78  // TEST: EXMARaLDA_FRESH
79  DropPanel dropPanel = new DropPanel();
80  FileDrop fileDrop;
81  DefaultListModel listModel = new DefaultListModel();
82  int done = 0;
83  int all = 0;
84  LineBorder dragBorder = new LineBorder(Color.BLUE, 3, true);
85 
86  ImageIcon inactiveIcon;
87  ImageIcon activeIcon;
88 
89  CorpusIO cio = new CorpusIO();
90  CorpusMagician corpuma = new CorpusMagician();
91  Collection<CorpusData> allFiles = new ArrayList();
92  Report report = new Report();
93 
97  public ApplicationFrame() {
98  initComponents();
99  inactiveIcon = new javax.swing.ImageIcon(getClass().getResource("/images/droptarget.png"));
100  activeIcon = new javax.swing.ImageIcon(getClass().getResource("/images/droptarget_active.png"));
101  mainPanel.add(dropPanel, java.awt.BorderLayout.NORTH);
102  teiFilesList.setModel(listModel);
103  pack();
104  fileDrop = new FileDrop(dropPanel,
105  dragBorder,
106  new FileDrop.Listener() {
107  @Override
108  public void filesDropped(java.io.File[] files) {
109  // handle file drop
110  handleFileDrop(files);
111  } // end filesDropped
112  }); // end FileDrop.Listener
113  }
114 
115  void message(final String s) {
116  int index = 0;
117  while (index < s.length()) {
118  String schnippel = s.substring(index, Math.min(index + 75, s.length()));
119  messagesTextArea.append(schnippel + "\n");
120  index += 75;
121  }
122  messagesTextArea.setCaretPosition(messagesTextArea.getText().length() - 1);
123  }
124 
125  void updateProgress(String s) {
126  done++;
127  progressBar.setValue((int) Math.round(((double) done / all) * 100));
128  progressBar.setString(s);
129  if (done == all) {
130  progressBar.setString("Done.");
131  dropPanel.setIcon(inactiveIcon);
132  message("***** DONE *****");
133  }
134  if ((teiFilesList.getModel().getSize() > 0) || (teiFilesList.isVisible())) {
135  final int lastIndex = teiFilesList.getModel().getSize() - 1;
136  try {
137  SwingUtilities.invokeAndWait(new Runnable() {
138  public void run() {
139  teiFilesList.getSelectionModel().setSelectionInterval(lastIndex, lastIndex);
140  }
141  });
142  teiFilesList.scrollRectToVisible(teiFilesList.getCellBounds(lastIndex, lastIndex));
143  } catch (Exception ex) {
144  ex.printStackTrace();
145  }
146  }
147  }
148 
149  void handleFileDrop(final File[] files) {
150  for (File f : files) {
151  try {
152  URL url = f.toURI().toURL();
153  if (f.isDirectory()) {
154  message("[Directory " + f.getName() + "]");
155  System.out.println("[Directory " + f.getName() + "]");
156  //need to use CorpusIO read(URL) method here
157  //that gives back a Colelction of CorpusData Objects
158  ArrayList<CorpusData> allcd = (ArrayList<CorpusData>) cio.read(url);
159  for (CorpusData cd: allcd){
160  message(cd.getFilename() + " added to list.");
161  }
162  } else {
163  CorpusData cd = cio.readFileURL(url);
164  if (cd != null) {
165  allFiles.add(cd);
166  message(cd.getFilename() + " added to list.");
167  } else {
168  message(f.getName() + " not added to list (data suffix not recognized).");
169  }
170  }
171  } catch (MalformedURLException ex) {
172  message(f.getName() + " not added to list (file could not be read).");
173  } catch (URISyntaxException ex) {
174  message(f.getName() + " not added to list (file could not be read).");
175  } catch (IOException ex) {
176  Logger.getLogger(ApplicationFrame.class.getName()).log(Level.SEVERE, null, ex);
177  } catch (SAXException ex) {
178  Logger.getLogger(ApplicationFrame.class.getName()).log(Level.SEVERE, null, ex);
179  } catch (JexmaraldaException ex) {
180  Logger.getLogger(ApplicationFrame.class.getName()).log(Level.SEVERE, null, ex);
181  } catch (ClassNotFoundException ex) {
182  Logger.getLogger(ApplicationFrame.class.getName()).log(Level.SEVERE, null, ex);
183  }
184  }
185  done = 0;
186  all = allFiles.size();
187  dropPanel.setIcon(activeIcon);
188 
189  for (final CorpusData cd : allFiles) {
190  Thread t = new Thread() {
191 
192  @Override
193  public void run() {
194  try {
195  //now we need to run the correct functions on the correct data
196  //where do we display which functions are possible on the data?
197  // Determine input type
198 
199 // ex.printStackTrace();
200 // message("["+ f.getName() + "] " + ex.getLocalizedMessage());
201 // updateProgress(f.getName());
202 // return;
203 
204  // Determine errorlist saveing location
205  URL reportlocation;
206  if (sameDirectory.isSelected()){
207  reportlocation = cd.getParentURL();
208  } else {
209  reportlocation = Paths.get(otherDirectoryTextField.getText()).toUri().toURL();
210  }
211  URI uri = reportlocation.toURI();
212  URI parentURI = uri.getPath().endsWith("/") ? uri.resolve("..") : uri.resolve(".");
213  String errorlistlocstring = Paths.get(parentURI).toString() + File.separator + "report_output.html";
214  URL errorlistlocation = Paths.get(errorlistlocstring).toUri().toURL();
215 
216 // run corpusfunctions
217 //find out which function to run
218  List<String> s = Arrays.asList(String.valueOf(parseMethodComboBox.getSelectedItem()));
219  corpuma.setChosencorpusfunctions(s);
220  for (String str : s) {
221  message("Added function " + str + " to list");
222  }
223 
224  Collection<CorpusFunction> cfs = corpusFunctionStrings2Classes(corpuma.getChosencorpusfunctions());
225  for (CorpusFunction cf : cfs) {
226  //make sure to run it only on the data the check is allowed for
227  report.merge(corpuma.runCorpusFunction(cd, cf));
228  }
229 //TO DO
230  URL basedirectory = cd.getParentURL();
231  String reportOutput = ReportItem.generateDataTableHTML(report.getRawStatistics(), report.getSummaryLines());
232  String absoluteReport = reportOutput.replaceAll(basedirectory.toString(), "");
233  cio.write(absoluteReport, errorlistlocation);
234  message("Wrote ErrorList at " + errorlistlocation);
235  listModel.addElement(new File(cd.getFilename()));
236  updateProgress(cd.getFilename());
237  } catch (MalformedURLException ex) {
238  message("Couldn't write error list - location is incorrect");
239  } catch (IOException ex) {
240  message("Couldn't write error list - location is incorrect");
241  } catch (URISyntaxException ex) {
242  message("Couldn't write error list - location is incorrect");
243  }
244  }
245 
246  };
247  t.start();
248  }
249  }
250 
251  void displayHelp() {
252  try {
253  //TO DO better website
254  Desktop.getDesktop().browse(new URI("https://lab.multilingua.uni-hamburg.de/redmine/projects/redmine/wiki/How_to_use_the_Corpus_Validator"));
255  } catch (IOException ex) {
256  ex.printStackTrace();
257  } catch (URISyntaxException ex) {
258  Logger.getLogger(ApplicationFrame.class.getName()).log(Level.SEVERE, null, ex);
259  }
260 
261  }
262 
268  @SuppressWarnings("unchecked")
269  // <editor-fold defaultstate="collapsed" desc="Generated Code">
270  private void initComponents() {
271 
272  buttonGroup1 = new javax.swing.ButtonGroup();
273  sidePanel = new javax.swing.JPanel();
274  corpusServices = new javax.swing.JPanel();
275  jLabel3 = new javax.swing.JLabel();
276  settingsPanel = new javax.swing.JPanel();
277  corpusFunction = new javax.swing.JPanel();
278  jLabel1 = new javax.swing.JLabel();
279  parseMethodComboBox = new javax.swing.JComboBox();
280  outputPanel = new javax.swing.JPanel();
281  output = new javax.swing.JLabel();
282  sameDirectory = new javax.swing.JRadioButton();
283  otherDirectory = new javax.swing.JRadioButton();
284  otherDirectoryTextField = new javax.swing.JTextField();
285  browseButton = new javax.swing.JButton();
286  mainPanel = new javax.swing.JPanel();
287  jPanel1 = new javax.swing.JPanel();
288  messageAndProgressPanel = new javax.swing.JPanel();
289  messageScrollPane = new javax.swing.JScrollPane();
290  messagesTextArea = new javax.swing.JTextArea();
291  listScrollPane = new javax.swing.JScrollPane();
292  teiFilesList = new javax.swing.JList();
293  operationsPanel = new javax.swing.JPanel();
294  showXMLButton = new javax.swing.JButton();
295  showHTMLButton = new javax.swing.JButton();
296  lowerPanel = new javax.swing.JPanel();
297  jPanel7 = new javax.swing.JPanel();
298  progressBar = new javax.swing.JProgressBar();
299  dropletToggleButton = new javax.swing.JToggleButton();
300  helpButton = new javax.swing.JButton();
301 
302  setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
303  setTitle("Corpus Services");
304  getContentPane().setBackground(new java.awt.Color(15, 155, 155));
305 
306  sidePanel.setBackground(new java.awt.Color(15, 155, 155));
307  sidePanel.setBorder(null);
308  sidePanel.setPreferredSize(new java.awt.Dimension(150, 70));
309 
310  corpusServices.setBackground(new java.awt.Color(15, 155, 155));
311 
312  jLabel3.setBackground(new java.awt.Color(15, 155, 155));
313  jLabel3.setForeground(new java.awt.Color(255, 255, 255));
314  jLabel3.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N
315  jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons/chart-bars.png")));
316  jLabel3.setText("corpus services");
317 
318  javax.swing.GroupLayout corpusServicesLayout = new javax.swing.GroupLayout(corpusServices);
319  corpusServices.setLayout(corpusServicesLayout);
320  corpusServicesLayout.setHorizontalGroup(
321  corpusServicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
322  .addGroup(corpusServicesLayout.createSequentialGroup()
323  .addContainerGap()
324  .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
325  .addContainerGap())
326  );
327  corpusServicesLayout.setVerticalGroup(
328  corpusServicesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
329  .addGroup(corpusServicesLayout.createSequentialGroup()
330  .addGap(25, 25, 25)
331  .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
332  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
333  );
334 
335  settingsPanel.setBackground(new java.awt.Color(15, 155, 155));
336  settingsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createCompoundBorder(), "Settings", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 1, 14), new java.awt.Color(255, 255, 255))); // NOI18N
337  settingsPanel.setForeground(new java.awt.Color(255, 255, 255));
338  settingsPanel.setToolTipText("");
339  settingsPanel.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
340  settingsPanel.setMaximumSize(new java.awt.Dimension(150, 300));
341  settingsPanel.setMinimumSize(new java.awt.Dimension(120, 200));
342  settingsPanel.setPreferredSize(new java.awt.Dimension(120, 200));
343 
344  corpusFunction.setBackground(new java.awt.Color(15, 155, 155));
345  corpusFunction.setAlignmentX(0.0F);
346  corpusFunction.setPreferredSize(new java.awt.Dimension(178, 20));
347 
348  jLabel1.setBackground(new java.awt.Color(15, 155, 155));
349  jLabel1.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
350  jLabel1.setForeground(new java.awt.Color(255, 255, 255));
351  jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons/magic-wand.png")));
352  jLabel1.setText("Corpus function(s)");
353  jLabel1.setToolTipText("Choose the corpus function(s) you want to use.");
354  jLabel1.setMaximumSize(new java.awt.Dimension(150, 20));
355  jLabel1.setMinimumSize(new java.awt.Dimension(150, 20));
356  jLabel1.setPreferredSize(new java.awt.Dimension(150, 20));
357 
358  parseMethodComboBox.setBackground(new java.awt.Color(15, 155, 155));
359  parseMethodComboBox.setFont(new java.awt.Font("Segoe UI", 0, 10)); // NOI18N
360  parseMethodComboBox.setForeground(new java.awt.Color(15, 155, 155));
361  //To Do the available corpus functions
362  ArrayList<String> functions = (ArrayList<String>) corpuma.getAllExistingCFs();
363  parseMethodComboBox.setModel(new javax.swing.DefaultComboBoxModel(functions.toArray()));
364  parseMethodComboBox.setMaximumSize(new java.awt.Dimension(150, 24));
365  parseMethodComboBox.setMinimumSize(new java.awt.Dimension(150, 24));
366  parseMethodComboBox.setOpaque(true);
367  parseMethodComboBox.setPreferredSize(new java.awt.Dimension(150, 24));
368  parseMethodComboBox.addActionListener(new java.awt.event.ActionListener() {
369  public void actionPerformed(java.awt.event.ActionEvent evt) {
370  parseMethodComboBoxActionPerformed(evt);
371  }
372  });
373 
374  javax.swing.GroupLayout corpusFunctionLayout = new javax.swing.GroupLayout(corpusFunction);
375  corpusFunction.setLayout(corpusFunctionLayout);
376  corpusFunctionLayout.setHorizontalGroup(
377  corpusFunctionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
378  .addGroup(corpusFunctionLayout.createSequentialGroup()
379  .addContainerGap()
380  .addGroup(corpusFunctionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
381  .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
382  .addComponent(parseMethodComboBox, 0, 200, Short.MAX_VALUE))
383  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
384  );
385  corpusFunctionLayout.setVerticalGroup(
386  corpusFunctionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
387  .addGroup(corpusFunctionLayout.createSequentialGroup()
388  .addContainerGap()
389  .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
390  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
391  .addComponent(parseMethodComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
392  .addContainerGap(43, Short.MAX_VALUE))
393  );
394 
395  outputPanel.setBackground(new java.awt.Color(15, 155, 155));
396 
397  output.setBackground(new java.awt.Color(15, 155, 155));
398  output.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
399  output.setForeground(new java.awt.Color(255, 255, 255));
400  output.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons/enter.png")));
401  output.setText("Write error report to");
402  output.setMaximumSize(new java.awt.Dimension(150, 20));
403  output.setMinimumSize(new java.awt.Dimension(150, 20));
404  output.setPreferredSize(new java.awt.Dimension(150, 20));
405 
406  sameDirectory.setBackground(new java.awt.Color(15, 155, 155));
407  buttonGroup1.add(sameDirectory);
408  sameDirectory.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
409  sameDirectory.setForeground(new java.awt.Color(255, 255, 255));
410  sameDirectory.setSelected(true);
411  sameDirectory.setText("the same directory");
412  sameDirectory.setOpaque(true);
413  sameDirectory.addActionListener(new java.awt.event.ActionListener() {
414  public void actionPerformed(java.awt.event.ActionEvent evt) {
415  sameDirectoryActionPerformed(evt);
416  }
417  });
418 
419  otherDirectory.setBackground(new java.awt.Color(15, 155, 155));
420  buttonGroup1.add(otherDirectory);
421  otherDirectory.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
422  otherDirectory.setForeground(new java.awt.Color(255, 255, 255));
423  otherDirectory.setText("a separate directory: ");
424  otherDirectory.setOpaque(true);
425  otherDirectory.addActionListener(new java.awt.event.ActionListener() {
426  public void actionPerformed(java.awt.event.ActionEvent evt) {
427  otherDirectoryActionPerformed(evt);
428  }
429  });
430 
431  otherDirectoryTextField.setBackground(new java.awt.Color(15, 155, 155));
432  otherDirectoryTextField.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
433  otherDirectoryTextField.setAlignmentX(1.0F);
434  otherDirectoryTextField.setMaximumSize(new java.awt.Dimension(300, 20));
435  otherDirectoryTextField.setMinimumSize(new java.awt.Dimension(200, 20));
436  otherDirectoryTextField.setOpaque(true);
437  otherDirectoryTextField.setPreferredSize(new java.awt.Dimension(250, 20));
438 
439  browseButton.setBackground(new java.awt.Color(15, 155, 155));
440  browseButton.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
441  browseButton.setForeground(new java.awt.Color(15, 155, 155));
442  browseButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons/file-empty.png")));
443  browseButton.setText("Browse...");
444  browseButton.setAlignmentX(0.5F);
445  browseButton.setOpaque(true);
446  browseButton.addActionListener(new java.awt.event.ActionListener() {
447  public void actionPerformed(java.awt.event.ActionEvent evt) {
448  browseButtonActionPerformed(evt);
449  }
450  });
451 
452  javax.swing.GroupLayout outputPanelLayout = new javax.swing.GroupLayout(outputPanel);
453  outputPanel.setLayout(outputPanelLayout);
454  outputPanelLayout.setHorizontalGroup(
455  outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
456  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, outputPanelLayout.createSequentialGroup()
457  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
458  .addComponent(otherDirectoryTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 153, javax.swing.GroupLayout.PREFERRED_SIZE)
459  .addGap(68, 68, 68))
460  .addGroup(outputPanelLayout.createSequentialGroup()
461  .addContainerGap()
462  .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
463  .addGroup(outputPanelLayout.createSequentialGroup()
464  .addComponent(output, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
465  .addGap(36, 36, 36))
466  .addGroup(outputPanelLayout.createSequentialGroup()
467  .addGroup(outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
468  .addComponent(sameDirectory, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
469  .addComponent(otherDirectory)
470  .addComponent(browseButton))
471  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
472  );
473  outputPanelLayout.setVerticalGroup(
474  outputPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
475  .addGroup(outputPanelLayout.createSequentialGroup()
476  .addContainerGap()
477  .addComponent(output, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
478  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
479  .addComponent(sameDirectory)
480  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
481  .addComponent(otherDirectory)
482  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
483  .addComponent(otherDirectoryTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
484  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
485  .addComponent(browseButton)
486  .addGap(25, 25, 25))
487  );
488 
489  javax.swing.GroupLayout settingsPanelLayout = new javax.swing.GroupLayout(settingsPanel);
490  settingsPanel.setLayout(settingsPanelLayout);
491  settingsPanelLayout.setHorizontalGroup(
492  settingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
493  .addGroup(settingsPanelLayout.createSequentialGroup()
494  .addGroup(settingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
495  .addComponent(corpusFunction, 0, 178, Short.MAX_VALUE)
496  .addComponent(outputPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 165, javax.swing.GroupLayout.PREFERRED_SIZE))
497  .addContainerGap(19, Short.MAX_VALUE))
498  );
499  settingsPanelLayout.setVerticalGroup(
500  settingsPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
501  .addGroup(settingsPanelLayout.createSequentialGroup()
502  .addGap(14, 14, 14)
503  .addComponent(corpusFunction, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE)
504  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
505  .addComponent(outputPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
506  .addGap(86, 86, 86))
507  );
508 
509  javax.swing.GroupLayout sidePanelLayout = new javax.swing.GroupLayout(sidePanel);
510  sidePanel.setLayout(sidePanelLayout);
511  sidePanelLayout.setHorizontalGroup(
512  sidePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
513  .addGroup(sidePanelLayout.createSequentialGroup()
514  .addContainerGap()
515  .addComponent(corpusServices, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
516  .addComponent(settingsPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 192, Short.MAX_VALUE)
517  );
518  sidePanelLayout.setVerticalGroup(
519  sidePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
520  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, sidePanelLayout.createSequentialGroup()
521  .addContainerGap()
522  .addComponent(corpusServices, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
523  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
524  .addComponent(settingsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 295, javax.swing.GroupLayout.PREFERRED_SIZE)
525  .addContainerGap())
526  );
527 
528  mainPanel.setBackground(new java.awt.Color(15, 155, 155));
529  mainPanel.setLayout(new java.awt.BorderLayout());
530 
531  jPanel1.setBackground(new java.awt.Color(15, 155, 155));
532 
533  messageAndProgressPanel.setBackground(new java.awt.Color(15, 155, 155));
534  messageAndProgressPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createCompoundBorder(), " Messages", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 1, 14), new java.awt.Color(255, 255, 255))); // NOI18N
535  messageAndProgressPanel.setForeground(new java.awt.Color(255, 255, 255));
536  messageAndProgressPanel.setToolTipText("");
537  messageAndProgressPanel.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
538 
539  messageScrollPane.setBackground(new java.awt.Color(15, 155, 155));
540  messageScrollPane.setBorder(null);
541  messageScrollPane.setViewportBorder(null);
542  messageScrollPane.setPreferredSize(new java.awt.Dimension(400, 120));
543 
544  messagesTextArea.setBackground(new java.awt.Color(172, 221, 221));
545  messagesTextArea.setColumns(20);
546  messagesTextArea.setFont(new java.awt.Font("Monospaced", 0, 12)); // NOI18N
547  messagesTextArea.setForeground(new java.awt.Color(255, 255, 255));
548  messagesTextArea.setRows(5);
549  messagesTextArea.setBorder(null);
550  messagesTextArea.setPreferredSize(new java.awt.Dimension(140, 75));
551  messagesTextArea.setRequestFocusEnabled(false);
552  messagesTextArea.setLineWrap(true);
553  messageScrollPane.setViewportView(messagesTextArea);
554  messageAndProgressPanel.add(messageScrollPane, java.awt.BorderLayout.CENTER);
555  javax.swing.GroupLayout messageAndProgressPanelLayout = new javax.swing.GroupLayout(messageAndProgressPanel);
556  messageAndProgressPanel.setLayout(messageAndProgressPanelLayout);
557  messageAndProgressPanelLayout.setHorizontalGroup(
558  messageAndProgressPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
559  .addGroup(messageAndProgressPanelLayout.createSequentialGroup()
560  .addContainerGap()
561  .addComponent(messageScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 299, javax.swing.GroupLayout.PREFERRED_SIZE)
562  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
563  );
564  messageAndProgressPanelLayout.setVerticalGroup(
565  messageAndProgressPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
566  .addComponent(messageScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
567  );
568 
569  listScrollPane.setBackground(new java.awt.Color(15, 155, 155));
570  listScrollPane.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createCompoundBorder(), "Processed files", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 1, 14), new java.awt.Color(255, 255, 255))); // NOI18N
571  listScrollPane.setForeground(new java.awt.Color(255, 255, 255));
572 
573  teiFilesList.setBackground(new java.awt.Color(172, 221, 221));
574  teiFilesList.setForeground(new java.awt.Color(255, 255, 255));
575  teiFilesList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
576  public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
577  teiFilesListValueChanged(evt);
578  }
579  });
580  listScrollPane.setViewportView(teiFilesList);
581 
582  operationsPanel.setBackground(new java.awt.Color(15, 155, 155));
583  operationsPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createCompoundBorder(), "Operations", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Segoe UI", 1, 14), new java.awt.Color(255, 255, 255))); // NOI18N
584  operationsPanel.setForeground(new java.awt.Color(255, 255, 255));
585  operationsPanel.setMinimumSize(new java.awt.Dimension(70, 96));
586  operationsPanel.setPreferredSize(new java.awt.Dimension(70, 96));
587 
588  showXMLButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/exmaralda/tei/swing/xmldoc.gif"))); // NOI18N
589  showXMLButton.setToolTipText("Show XML");
590  showXMLButton.setEnabled(false);
591  showXMLButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
592  showXMLButton.setMaximumSize(new java.awt.Dimension(60, 60));
593  showXMLButton.setMinimumSize(new java.awt.Dimension(60, 60));
594  showXMLButton.setPreferredSize(new java.awt.Dimension(60, 60));
595  showXMLButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
596  showXMLButton.addActionListener(new java.awt.event.ActionListener() {
597  public void actionPerformed(java.awt.event.ActionEvent evt) {
598  showXMLButtonActionPerformed(evt);
599  }
600  });
601  operationsPanel.add(showXMLButton);
602 
603  showHTMLButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/exmaralda/folker/tangoicons/tango-icon-theme-0.8.1/32x32/mimetypes/text-html.png"))); // NOI18N
604  showHTMLButton.setToolTipText("Show HTML in Browser");
605  showHTMLButton.setEnabled(false);
606  showHTMLButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
607  showHTMLButton.setMaximumSize(new java.awt.Dimension(60, 60));
608  showHTMLButton.setMinimumSize(new java.awt.Dimension(60, 60));
609  showHTMLButton.setPreferredSize(new java.awt.Dimension(60, 60));
610  showHTMLButton.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
611  showHTMLButton.addActionListener(new java.awt.event.ActionListener() {
612  public void actionPerformed(java.awt.event.ActionEvent evt) {
613  showHTMLButtonActionPerformed(evt);
614  }
615  });
616  operationsPanel.add(showHTMLButton);
617 
618  javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
619  jPanel1.setLayout(jPanel1Layout);
620  jPanel1Layout.setHorizontalGroup(
621  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
622  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
623  .addGap(5, 5, 5)
624  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
625  .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
626  .addComponent(messageAndProgressPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
627  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
628  .addComponent(listScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 316, javax.swing.GroupLayout.PREFERRED_SIZE)
629  .addGap(8, 8, 8))
630  .addGroup(jPanel1Layout.createSequentialGroup()
631  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
632  .addComponent(operationsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 643, javax.swing.GroupLayout.PREFERRED_SIZE)))
633  .addContainerGap())
634  );
635  jPanel1Layout.setVerticalGroup(
636  jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
637  .addGroup(jPanel1Layout.createSequentialGroup()
638  .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
639  .addComponent(messageAndProgressPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
640  .addComponent(listScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 232, javax.swing.GroupLayout.PREFERRED_SIZE))
641  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
642  .addComponent(operationsPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
643  .addGap(0, 55, Short.MAX_VALUE))
644  );
645 
646  mainPanel.add(jPanel1, java.awt.BorderLayout.CENTER);
647 
648  lowerPanel.setBackground(new java.awt.Color(15, 155, 155));
649  lowerPanel.setLayout(new java.awt.BorderLayout());
650 
651  jPanel7.setBackground(new java.awt.Color(15, 155, 155));
652  jPanel7.setLayout(new java.awt.BorderLayout());
653 
654  progressBar.setBackground(new java.awt.Color(15, 155, 155));
655  progressBar.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
656  progressBar.setForeground(new java.awt.Color(255, 255, 255));
657  progressBar.setMaximumSize(new java.awt.Dimension(300, 19));
658  progressBar.setString("Waiting for input...");
659  progressBar.setStringPainted(true);
660  jPanel7.add(progressBar, java.awt.BorderLayout.CENTER);
661 
662  dropletToggleButton.setBackground(new java.awt.Color(15, 155, 155));
663  dropletToggleButton.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
664  dropletToggleButton.setForeground(new java.awt.Color(15, 155, 155));
665  dropletToggleButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons/chevron-left-circle.png")));
666  dropletToggleButton.setText("Reduce to droplet");
667  dropletToggleButton.addActionListener(new java.awt.event.ActionListener() {
668  public void actionPerformed(java.awt.event.ActionEvent evt) {
669  dropletToggleButtonActionPerformed(evt);
670  }
671  });
672  jPanel7.add(dropletToggleButton, java.awt.BorderLayout.EAST);
673 
674  helpButton.setBackground(new java.awt.Color(15, 155, 155));
675  helpButton.setFont(new java.awt.Font("Segoe UI", 0, 12)); // NOI18N
676  helpButton.setForeground(new java.awt.Color(15, 155, 155));
677  helpButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons/question-circle.png")));
678  helpButton.setText("Help");
679  helpButton.addActionListener(new java.awt.event.ActionListener() {
680  public void actionPerformed(java.awt.event.ActionEvent evt) {
681  helpButtonActionPerformed(evt);
682  }
683  });
684  jPanel7.add(helpButton, java.awt.BorderLayout.WEST);
685 
686  lowerPanel.add(jPanel7, java.awt.BorderLayout.SOUTH);
687 
688  javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
689  getContentPane().setLayout(layout);
690  layout.setHorizontalGroup(
691  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
692  .addGroup(layout.createSequentialGroup()
693  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
694  .addComponent(lowerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 851, javax.swing.GroupLayout.PREFERRED_SIZE)
695  .addGroup(layout.createSequentialGroup()
696  .addComponent(sidePanel, javax.swing.GroupLayout.PREFERRED_SIZE, 192, javax.swing.GroupLayout.PREFERRED_SIZE)
697  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
698  .addComponent(mainPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 653, javax.swing.GroupLayout.PREFERRED_SIZE)))
699  .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
700  );
701  layout.setVerticalGroup(
702  layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
703  .addGroup(layout.createSequentialGroup()
704  .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
705  .addComponent(mainPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
706  .addComponent(sidePanel, javax.swing.GroupLayout.PREFERRED_SIZE, 390, javax.swing.GroupLayout.PREFERRED_SIZE))
707  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
708  .addComponent(lowerPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
709  );
710 
711  pack();
712  }// </editor-fold>
713 
714  private void dropletToggleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dropletToggleButtonActionPerformed
715  boolean hide = !(dropletToggleButton.isSelected());
716  if (!hide) {
717  dropletToggleButton.setText("Expand");
718  } else {
719  dropletToggleButton.setText("Reduce to droplet");
720  }
721  messageAndProgressPanel.setVisible(hide);
722  settingsPanel.setVisible(hide);
723  operationsPanel.setVisible(hide);
724  listScrollPane.setVisible(hide);
725  pack();
726  }//GEN-LAST:event_dropletToggleButtonActionPerformed
727 
728  private void helpButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_helpButtonActionPerformed
729  this.displayHelp();
730  }//GEN-LAST:event_helpButtonActionPerformed
731 
732  private void browseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_browseButtonActionPerformed
733  JFileChooser jfc = new JFileChooser();
734  jfc.setDialogTitle("Choose directory");
735  jfc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
736  int ret = jfc.showOpenDialog(this);
737  if (ret == JFileChooser.APPROVE_OPTION) {
738  otherDirectoryTextField.setText(jfc.getSelectedFile().getAbsolutePath());
739  otherDirectory.setSelected(true);
740  }
741  }//GEN-LAST:event_browseButtonActionPerformed
742 
743  private void otherDirectoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_otherDirectoryActionPerformed
744  // TODO add your handling code here:
745  }//GEN-LAST:event_otherDirectoryActionPerformed
746 
747  private void sameDirectoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_sameDirectoryActionPerformed
748  // TODO add your handling code here:
749  }//GEN-LAST:event_sameDirectoryActionPerformed
750 
751  private void parseMethodComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_parseMethodComboBoxActionPerformed
752  // TODO add your handling code here:
753  }//GEN-LAST:event_parseMethodComboBoxActionPerformed
754 
755  private void showHTMLButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showHTMLButtonActionPerformed
756  try {
757  File f = (File) (teiFilesList.getSelectedValue());
758  File tempHTML = File.createTempFile("teidrophtml", ".html");
759  tempHTML.deleteOnExit();
760  //String htmlString = new StylesheetFactory(true).applyInternalStylesheetToExternalXMLFile("/org/exmaralda/tei/xml/tei2html.xsl", f.getAbsolutePath());
761  FileOutputStream fos = new FileOutputStream(tempHTML);
762  //fos.write(htmlString.getBytes("UTF-8"));
763  fos.close();
764  System.out.println("document written.");
765  //BrowserLauncher.openURL(tempHTML.toURI().toURL().toString());
766  } catch (Exception ex) {
767  ex.printStackTrace();
768  JOptionPane.showMessageDialog(rootPane, ex.getLocalizedMessage());
769  }
770  }//GEN-LAST:event_showHTMLButtonActionPerformed
771 
772  private void showXMLButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_showXMLButtonActionPerformed
773  File f = (File) (teiFilesList.getSelectedValue());
774  Document teidoc;
775  try {
776  //teidoc = IOUtilities.readDocumentFromLocalFile(f.getAbsolutePath());
777  } catch (Exception ex) {
778  ex.printStackTrace();
779  JOptionPane.showMessageDialog(rootPane, ex.getLocalizedMessage());
780  return;
781  }
782  Format format = Format.getPrettyFormat();
783  XMLOutputter outputter = new XMLOutputter(format);
784  // Get the text pane's document
785  JTextPane textPane = new JTextPane();
786  StyledDocument doc = (StyledDocument) textPane.getDocument();
787  // Create a style object and then set the style attributes
788  Style style = doc.addStyle("StyleName", null);
789  // Font family
790  StyleConstants.setFontFamily(style, "Courier");
791  // Font size
792  StyleConstants.setFontSize(style, 12);
793  // Foreground color
794  StyleConstants.setForeground(style, Color.black);
795  /* try {
796  doc.insertString(doc.getLength(), outputter.outputString(teidoc), style);
797  } catch (BadLocationException ex) {
798  ex.printStackTrace();
799  } */
800  JDialog dialog = new JDialog(this, true);
801  dialog.setTitle(f.getName());
802  dialog.getContentPane().setLayout(new BorderLayout());
803  dialog.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
804  dialog.getContentPane().add(new JScrollPane(textPane), BorderLayout.CENTER);
805  dialog.pack();
806  dialog.setLocationRelativeTo(this);
807  textPane.setCaretPosition(0);
808  dialog.setVisible(true);
809  }//GEN-LAST:event_showXMLButtonActionPerformed
810 
811  private void teiFilesListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_teiFilesListValueChanged
812  enableOperations(teiFilesList.getSelectedIndex() >= 0);
813  }//GEN-LAST:event_teiFilesListValueChanged
814 
815  void enableOperations(boolean enable) {
816  showXMLButton.setEnabled(enable);
817  showHTMLButton.setEnabled(enable);
818  }
819 
823  public static void main(String args[]) {
824  //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
825  try {
826  System.out.println("Setting system L&F : " + javax.swing.UIManager.getSystemLookAndFeelClassName());
827  javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
828  } catch (Exception e) {
829  e.printStackTrace();
830  }
831  //</editor-fold>
832 
833  /* Create and display the form */
834  java.awt.EventQueue.invokeLater(new Runnable() {
835  public void run() {
836  new ApplicationFrame().setVisible(true);
837  }
838  });
839  }
840 
841  // Variables declaration - do not modify//GEN-BEGIN:variables
842  private javax.swing.JButton browseButton;
843  private javax.swing.ButtonGroup buttonGroup1;
844  private javax.swing.JPanel corpusFunction;
845  private javax.swing.JPanel corpusServices;
846  private javax.swing.JToggleButton dropletToggleButton;
847  private javax.swing.JButton helpButton;
848  private javax.swing.JLabel jLabel1;
849  private javax.swing.JLabel jLabel3;
850  private javax.swing.JPanel jPanel1;
851  private javax.swing.JPanel jPanel7;
852  private javax.swing.JScrollPane listScrollPane;
853  private javax.swing.JPanel lowerPanel;
854  private javax.swing.JPanel mainPanel;
855  private javax.swing.JPanel messageAndProgressPanel;
856  private javax.swing.JScrollPane messageScrollPane;
857  private javax.swing.JTextArea messagesTextArea;
858  private javax.swing.JPanel operationsPanel;
859  private javax.swing.JRadioButton otherDirectory;
860  private javax.swing.JTextField otherDirectoryTextField;
861  private javax.swing.JLabel output;
862  private javax.swing.JPanel outputPanel;
863  private javax.swing.JComboBox parseMethodComboBox;
864  private javax.swing.JProgressBar progressBar;
865  private javax.swing.JRadioButton sameDirectory;
866  private javax.swing.JPanel settingsPanel;
867  private javax.swing.JButton showHTMLButton;
868  private javax.swing.JButton showXMLButton;
869  private javax.swing.JPanel sidePanel;
870  private javax.swing.JList teiFilesList;
871  // End of variables declaration//GEN-END:variables
872 
873 }
static Collection< String > getAllExistingCFs()
void merge(Report sr)
Definition: Report.java:73
Report runCorpusFunction(Corpus c, CorpusFunction cf)
static String generateDataTableHTML(Collection< ReportItem > errors, String summarylines)
CorpusData readFileURL(URL url, Collection< Class<?extends CorpusData >> clcds)
Definition: CorpusIO.java:125
Collection< ReportItem > getRawStatistics()
Definition: Report.java:499
Collection< CorpusData > read(URL url)
Definition: CorpusIO.java:168
static Collection< CorpusFunction > corpusFunctionStrings2Classes(Collection< String > corpusfunctionstrings)
void setChosencorpusfunctions(Collection< String > chosencorpusfunctions)
Collection< String > getChosencorpusfunctions()
void write(CorpusData cd, URL url)
Definition: CorpusIO.java:66