001 /*
002 * The contents of this file are subject to the Mozilla Public
003 * License Version 1.1 (the "License"); you may not use this file
004 * except in compliance with the License. You may obtain a copy of
005 * the License at http://www.mozilla.org/MPL/
006 *
007 * Software distributed under the License is distributed on an "AS
008 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
009 * implied. See the License for the specific language governing
010 * rights and limitations under the License.
011 *
012 * The Original Code is Knowtator.
013 *
014 * The Initial Developer of the Original Code is University of Colorado.
015 * Copyright (C) 2005 - 2008. All Rights Reserved.
016 *
017 * Knowtator was developed by the Center for Computational Pharmacology
018 * (http://compbio.uchcs.edu) at the University of Colorado Health
019 * Sciences Center School of Medicine with support from the National
020 * Library of Medicine.
021 *
022 * Current information about Knowtator can be obtained at
023 * http://knowtator.sourceforge.net/
024 *
025 * Contributor(s):
026 * Philip V. Ogren <philip@ogren.info> (Original Author)
027 */
028
029 package edu.uchsc.ccp.knowtator.textsource;
030
031 import java.awt.Component;
032 import java.awt.FlowLayout;
033 import java.awt.event.ActionEvent;
034 import java.awt.event.ActionListener;
035
036 import javax.swing.JButton;
037 import javax.swing.JLabel;
038 import javax.swing.JPanel;
039 import javax.swing.JToolBar;
040 import javax.swing.border.TitledBorder;
041
042 import edu.stanford.smi.protege.model.Project;
043 import edu.stanford.smi.protege.util.ComponentUtilities;
044 import edu.uchsc.ccp.knowtator.TextSourceUtil;
045
046 public class TextSourceSelector extends JPanel implements ActionListener, TextSourceChangeListener,
047 TextSourceCollectionChangeListener {
048 JPanel panel;
049
050 JLabel textSourceCollectionLabel;
051
052 JButton previousTextSourceButton;
053
054 JButton nextTextSourceButton;
055
056 JButton selectTextSourceButton;
057
058 JButton findTextSourceButton;
059
060 JButton openTextSourceCollectionButton;
061
062 TitledBorder border;
063
064 TextSourceUtil textSourceUtil;
065
066 Project project;
067
068 Component parent;
069
070 JToolBar toolBar;
071
072 /** Creates a new instance of TextSourceSelector */
073 public TextSourceSelector(Project project, TextSourceUtil textSourceUtil, JToolBar toolBar, Component parent) {
074 super(new FlowLayout());
075
076 this.project = project;
077 this.textSourceUtil = textSourceUtil;
078 this.toolBar = toolBar;
079 this.parent = parent;
080
081 textSourceUtil.addTextSourceChangeListener(this);
082 textSourceUtil.addTextSourceCollectionChangeListener(this);
083
084 textSourceCollectionLabel = new JLabel("Text Source Collection: ");
085
086 panel = new JPanel();
087 previousTextSourceButton = new JButton(ComponentUtilities.loadImageIcon(TextSourceSelector.class,
088 "/edu/uchsc/ccp/knowtator/images/prev.gif"));
089 previousTextSourceButton.addActionListener(this);
090 previousTextSourceButton.setEnabled(false);
091 previousTextSourceButton.setToolTipText("previous text source");
092 nextTextSourceButton = new JButton(ComponentUtilities.loadImageIcon(TextSourceSelector.class,
093 "/edu/uchsc/ccp/knowtator/images/next.gif"));
094 nextTextSourceButton.addActionListener(this);
095 nextTextSourceButton.setEnabled(false);
096 nextTextSourceButton.setToolTipText("next text source");
097 openTextSourceCollectionButton = new JButton(ComponentUtilities.loadImageIcon(TextSourceSelector.class,
098 "/edu/uchsc/ccp/knowtator/images/Open24.gif"));
099 openTextSourceCollectionButton.setToolTipText("Open text source collection");
100 openTextSourceCollectionButton.addActionListener(this);
101 selectTextSourceButton = new JButton(ComponentUtilities.loadImageIcon(TextSourceSelector.class,
102 "/edu/uchsc/ccp/knowtator/images/History24.gif"));
103 selectTextSourceButton.addActionListener(this);
104 selectTextSourceButton.setEnabled(false);
105 selectTextSourceButton.setToolTipText("Select text source from list");
106 findTextSourceButton = new JButton(ComponentUtilities.loadImageIcon(TextSourceSelector.class,
107 "/edu/uchsc/ccp/knowtator/images/Find24.gif"));
108 findTextSourceButton.addActionListener(this);
109 findTextSourceButton.setEnabled(false);
110 findTextSourceButton.setToolTipText("Search for text source");
111
112 // panel.add(previousTextSourceButton);
113 // panel.add(nextTextSourceButton);
114 // panel.add(selectTextSourceButton);
115 // panel.add(findTextSourceButton);
116 // panel.add(openTextSourceCollectionButton);
117
118 toolBar.add(textSourceCollectionLabel);
119 toolBar.addSeparator();
120 toolBar.add(previousTextSourceButton);
121 toolBar.addSeparator();
122 toolBar.add(selectTextSourceButton);
123 toolBar.addSeparator();
124 toolBar.add(nextTextSourceButton);
125
126 toolBar.addSeparator();
127 toolBar.add(findTextSourceButton);
128 toolBar.addSeparator();
129 toolBar.add(openTextSourceCollectionButton);
130
131 // setLayout(new GridLayout(1,1));
132 // add(panel);
133
134 // border =
135 // BorderFactory.createTitledBorder("Text source collection: ");
136 // setBorder(border);
137
138 }
139
140 public void dispose() {
141 toolBar.remove(textSourceCollectionLabel);
142 toolBar.remove(previousTextSourceButton);
143 toolBar.remove(nextTextSourceButton);
144 toolBar.remove(selectTextSourceButton);
145 toolBar.remove(findTextSourceButton);
146 toolBar.remove(openTextSourceCollectionButton);
147
148 // remove the separators.
149 toolBar.remove(toolBar.getComponent(toolBar.getComponentCount() - 1));
150 toolBar.remove(toolBar.getComponent(toolBar.getComponentCount() - 1));
151 toolBar.remove(toolBar.getComponent(toolBar.getComponentCount() - 1));
152 toolBar.remove(toolBar.getComponent(toolBar.getComponentCount() - 1));
153 toolBar.remove(toolBar.getComponent(toolBar.getComponentCount() - 1));
154
155 previousTextSourceButton.removeActionListener(this);
156 nextTextSourceButton.removeActionListener(this);
157 selectTextSourceButton.removeActionListener(this);
158 findTextSourceButton.removeActionListener(this);
159 openTextSourceCollectionButton.removeActionListener(this);
160
161 panel = null;
162 textSourceCollectionLabel = null;
163 previousTextSourceButton = null;
164 nextTextSourceButton = null;
165 selectTextSourceButton = null;
166 findTextSourceButton = null;
167 openTextSourceCollectionButton = null;
168 border = null;
169
170 textSourceUtil.removeTextSourceChangeListener(this);
171 textSourceUtil.removeTextSourceCollectionChangeListener(this);
172
173 project = null;
174 toolBar = null;
175 }
176
177 public void textSourceChanged(TextSourceChangeEvent event) {
178 TextSource textSource = event.getTextSource();
179 if (textSource != null) {
180 textSourceUtil.getTextSourceInstance(textSource, true);
181 int textSourceIndex = textSourceUtil.getCurrentTextSourceCollection().getIndex(textSource);
182 previousTextSourceButton.setEnabled(textSourceIndex > 0);
183 nextTextSourceButton
184 .setEnabled(textSourceIndex < (textSourceUtil.getCurrentTextSourceCollection().size() - 1));
185 }
186 }
187
188 public void textSourceCollectionChanged(TextSourceCollectionChangeEvent event) {
189 TextSourceCollection tsc = event.getTextSourceCollection();
190 // border.setTitle("Text source collection: "+ tsc.getName());
191 textSourceCollectionLabel.setText("Text source collection: " + tsc.getName());
192 selectTextSourceButton.setEnabled(true);
193 findTextSourceButton.setEnabled(true);
194 }
195
196 public void actionPerformed(ActionEvent actionEvent) {
197 Object source = actionEvent.getSource();
198 if (source == openTextSourceCollectionButton) {
199 TextSourceCollection selectedTSC = textSourceUtil.selectTextSourceCollection(parent);
200 if (selectedTSC != null)
201 textSourceUtil.setCurrentTextSourceCollection(selectedTSC);
202 } else if (source == nextTextSourceButton) {
203 TextSource textSource = textSourceUtil.getCurrentTextSource();
204 TextSourceCollection tsc = textSourceUtil.getCurrentTextSourceCollection();
205 int textSourceIndex = tsc.getIndex(textSource);
206 try {
207 textSourceUtil.setCurrentTextSource(tsc.get(textSourceIndex + 1));
208 } catch (TextSourceAccessException tsae) {
209 tsae.printStackTrace();
210 }
211 } else if (source == previousTextSourceButton) {
212 TextSource textSource = textSourceUtil.getCurrentTextSource();
213 TextSourceCollection tsc = textSourceUtil.getCurrentTextSourceCollection();
214 int textSourceIndex = tsc.getIndex(textSource);
215 try {
216 textSourceUtil.setCurrentTextSource(tsc.get(textSourceIndex - 1));
217 } catch (TextSourceAccessException tsae) {
218 tsae.printStackTrace();
219 }
220 } else if (source == selectTextSourceButton) {
221 TextSource textSource = textSourceUtil.getCurrentTextSourceCollection().select(parent);
222 textSourceUtil.setCurrentTextSource(textSource);
223 } else if (source == findTextSourceButton) {
224 TextSource textSource = textSourceUtil.getCurrentTextSourceCollection().find(parent);
225 textSourceUtil.setCurrentTextSource(textSource);
226 }
227 }
228 }