| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| |
| package org.apache.uima.tools.docanalyzer; |
| |
| /* |
| * |
| * Manages the reading and storing of Preferences for the DocumentAnalyzer Contains preference code |
| * so directory names can be known throughout the application. |
| */ |
| import java.io.File; |
| import java.util.prefs.Preferences; |
| |
| import javax.swing.JButton; |
| |
| public class PrefsMediator { |
| |
| private FileSelector inputFileSelector; |
| |
| private FileSelector outputFileSelector; |
| |
| private FileSelector xmlFileSelector; |
| |
| private JButton runButton, interButton, viewButton; |
| |
| private Preferences prefs; |
| |
| private String taeDir; // directory where TAE is located |
| |
| private String outputDir; // where files are written |
| |
| private String inputDir; // where original files are located |
| |
| private String defaultInputDir; // so we start with something |
| |
| private String defaultOutputDir; |
| |
| private String language; |
| |
| private String encoding; |
| |
| private String viewType; |
| |
| private String xmlTag; |
| |
| // constants describing preference entries |
| private static final String VIEWTYPE = "viewType"; |
| |
| private static final String ENCODING = "encoding"; |
| |
| private static final String LANGUAGE = "language"; |
| |
| private static final String TAEDESCRIPTOR = "taeDescriptor"; |
| |
| private static final String OUTDIR = "outDir"; |
| |
| private static final String INDIR = "inDir"; |
| |
| private static final String XMLTAG = "xmlTag"; |
| |
| public PrefsMediator() { |
| // get the installed UIMA home directory |
| defaultInputDir = "examples/data"; |
| defaultOutputDir = "examples/data/processed"; |
| prefs = Preferences.userRoot().node("org/apache/uima/tools/DocumentAnalyzer1"); |
| restorePreferences(); |
| } |
| |
| public void restorePreferences() { |
| inputDir = prefs.get(INDIR, defaultInputDir); |
| outputDir = prefs.get(OUTDIR, defaultOutputDir); |
| taeDir = prefs.get(TAEDESCRIPTOR, ""); |
| language = prefs.get(LANGUAGE, "en"); |
| encoding = prefs.get(ENCODING, "UTF-8"); |
| viewType = prefs.get(VIEWTYPE, "Java Viewer"); |
| xmlTag = prefs.get(XMLTAG, ""); |
| } |
| |
| // saves current preferences |
| public void savePreferences() { |
| String t1 = inputFileSelector.getSelected(); |
| setInputDir(t1); |
| String t2 = outputFileSelector.getSelected(); |
| setOutputDir(t2); |
| String t3 = xmlFileSelector.getSelected(); |
| setTAEfile(t3); |
| } |
| |
| /** |
| * @return Returns the inputDir. |
| */ |
| public String getInputDir() { |
| return inputDir; |
| } |
| |
| /** |
| * @param inputDir |
| * The inputDir to set. |
| */ |
| public void setInputDir(String inputDir) { |
| this.inputDir = inputDir; |
| prefs.put(INDIR, inputDir); |
| |
| } |
| |
| /** |
| * @return Returns the outputDir. |
| */ |
| public String getOutputDir() { |
| return outputDir; |
| } |
| |
| /** |
| * @param outputDir |
| * The outputDir to set. |
| */ |
| public void setOutputDir(String outputDir) { |
| this.outputDir = outputDir; |
| prefs.put(OUTDIR, outputDir); |
| } |
| |
| /** |
| * Special case of setOutpuDir needed for interactive mode. In interactive mode, we append |
| * "/interactive_out" to the end, but we don't want to save this in the preferences. To support |
| * that, this method takes one parameter which is the output dir to be set and used by the |
| * application, and a second parameter to set the directory that is saved to the preferences. |
| * |
| * @param outputDir |
| * the output dir to set |
| * @param outputDirToSave |
| * the output dir to save to the preferences |
| */ |
| public void setOutputDirForInteractiveMode(String outputDir, String outputDirToSave) { |
| this.outputDir = outputDir; |
| prefs.put(OUTDIR, outputDirToSave); |
| } |
| |
| /** |
| * @return Returns the tAEdir. |
| */ |
| public String getTAEfile() { |
| return taeDir; |
| } |
| |
| /** |
| * get the path to the TAE that is where the StyleMap file should be written |
| * |
| */ |
| public String getTAEPath() { |
| int index = indexOfLastFileSeparator(taeDir); |
| if (index > 0) { |
| String path = taeDir.substring(0, index); |
| return path; |
| } else { |
| return ""; |
| } |
| } |
| |
| public String getTAEFileNameRoot() { |
| String file; |
| int index = indexOfLastFileSeparator(taeDir); |
| if (index > 0) { |
| file = taeDir.substring(index); |
| } else { |
| file = taeDir; |
| } |
| int ix = file.indexOf(".xml"); |
| if (ix >= 0) { |
| file = file.substring(0, ix); |
| } |
| return file; |
| } |
| |
| /** |
| * Gets index of last file separator character in a file path. |
| * Supports File.separator but also / on Windows. |
| * @param path |
| * @return index of the last file separator char. Returns -1 if none. |
| */ |
| private int indexOfLastFileSeparator(String path) { |
| int index = path.lastIndexOf(File.separator); |
| if (!File.separator.equals("/")) { |
| index = Math.max(index, path.lastIndexOf('/')); |
| } |
| return index; |
| } |
| |
| /** |
| * @param TAEdir |
| * set the TAE directory |
| */ |
| public void setTAEfile(String edir) { |
| taeDir = edir; |
| prefs.put(TAEDESCRIPTOR, taeDir); |
| } |
| |
| /** |
| * @return Returns the encoding. |
| */ |
| public String getEncoding() { |
| return encoding; |
| } |
| |
| /** |
| * @param encoding |
| * The encoding to set. |
| */ |
| public void setEncoding(String encoding) { |
| this.encoding = encoding; |
| prefs.put(ENCODING, encoding); |
| } |
| |
| /** |
| * @return Returns the language. |
| */ |
| public String getLanguage() { |
| return language; |
| } |
| |
| /** |
| * @param language |
| * The language to set. |
| */ |
| public void setLanguage(String language) { |
| this.language = language; |
| prefs.put(LANGUAGE, language); |
| } |
| |
| /** |
| * @return Returns the view type. |
| */ |
| public String getViewType() { |
| return viewType; |
| } |
| |
| /** |
| * @param viewType |
| * The view type to set. |
| */ |
| public void setViewType(String viewType) { |
| this.viewType = viewType; |
| prefs.put(VIEWTYPE, viewType); |
| } |
| |
| /** |
| * @return Returns the xmlTag. |
| */ |
| public String getXmlTag() { |
| return xmlTag; |
| } |
| |
| /** |
| * @param xmlTag |
| * The xmlTag to set. |
| */ |
| public void setXmlTag(String xmlTag) { |
| this.xmlTag = xmlTag; |
| prefs.put(XMLTAG, xmlTag); |
| } |
| |
| /** returns the new edited stylemap file */ |
| public File getStylemapFile() { |
| String s = getTAEPath() + getTAEFileNameRoot() + "StyleMap.xml"; |
| return new File(s); |
| } |
| |
| // gets copies of buttonreference se it can mediate their on-ness |
| public void setDocButtons(JButton run, JButton inter, JButton view) { |
| runButton = run; |
| interButton = inter; |
| viewButton = view; |
| |
| fieldFocusLost(); // sets any enabled that should be |
| } |
| |
| // sets the File Seelctors |
| public void setFileSelectors(FileSelector input, FileSelector output, FileSelector xml) { |
| inputFileSelector = input; |
| outputFileSelector = output; |
| xmlFileSelector = xml; |
| } |
| |
| // check all 3 text fields and adjust the enabling of the 3 buttons |
| public void fieldFocusLost() { |
| boolean enableRun = false; |
| boolean enableInter = false; |
| boolean enableView = false; |
| if (inputFileSelector != null) { |
| String t1 = inputFileSelector.getSelected(); |
| setInputDir(t1); |
| String t2 = outputFileSelector.getSelected(); |
| setOutputDir(t2); |
| String t3 = xmlFileSelector.getSelected(); |
| setTAEfile(t3); |
| if (t2.length() > 0) { |
| enableView = true; |
| } |
| if ((t2.length() > 0) && (t3.length() > 0)) { |
| enableInter = true; |
| if (t1.length() > 0) { |
| enableRun = true; |
| } |
| } |
| } |
| runButton.setEnabled(enableRun); |
| interButton.setEnabled(enableInter); |
| viewButton.setEnabled(enableView); |
| } |
| |
| } |