use of javax.swing.ToolTipManager in project ACS by ACS-Community.
the class AlarmTable method initGUI.
/**
* Init the GUI
*/
private void initGUI() {
setShowHorizontalLines(true);
// Build and set the selection model
selectionModel = new DefaultListSelectionModel();
selectionModel.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
setSelectionModel(selectionModel);
this.setOpaque(false);
sorter = new TableRowSorter<AlarmTableModel>(model);
this.setRowSorter(sorter);
sorter.setMaxSortKeys(2);
sorter.setSortsOnUpdates(true);
// Initially sort by timestamp
List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
sortKeys.add(new RowSorter.SortKey(AlarmTableColumn.PRIORITY.ordinal(), SortOrder.ASCENDING));
sortKeys.add(new RowSorter.SortKey(AlarmTableColumn.TIME.ordinal(), SortOrder.DESCENDING));
sorter.setSortKeys(sortKeys);
// Remove all the columns not visible at startup
TableColumnModel colModel = getColumnModel();
columns = new TableColumn[colModel.getColumnCount()];
for (int t = 0; t < columns.length; t++) {
columns[t] = colModel.getColumn(t);
columns[t].setIdentifier(AlarmTableColumn.values()[t]);
if (columns[t].getIdentifier() == AlarmTableColumn.ICON || columns[t].getIdentifier() == AlarmTableColumn.IS_CHILD || columns[t].getIdentifier() == AlarmTableColumn.IS_PARENT) {
columns[t].setWidth(20);
columns[t].setResizable(false);
columns[t].setPreferredWidth(20);
columns[t].setMaxWidth(20);
columns[t].setMinWidth(20);
} else if (columns[t].getIdentifier() == AlarmTableColumn.PRIORITY) {
BufferedImage bImg = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
Graphics2D g2D = bImg.createGraphics();
FontMetrics fm = g2D.getFontMetrics();
int sz = fm.stringWidth(PriorityLabel.VERY_HIGH.description);
columns[t].setPreferredWidth(sz + 6);
columns[t].setMaxWidth(sz + 8);
}
}
for (AlarmTableColumn col : AlarmTableColumn.values()) {
if (!col.visibleAtStartup) {
colModel.removeColumn(columns[col.ordinal()]);
}
}
buildPopupMenu();
addMouseListener(mouseAdapter);
getTableHeader().addMouseListener(new AlarmHeaderMouseAdapter());
// Set the tooltip
ToolTipManager ttm = ToolTipManager.sharedInstance();
ttm.setDismissDelay(Integer.MAX_VALUE);
ttm.setLightWeightPopupEnabled(true);
}
use of javax.swing.ToolTipManager in project cytoscape-impl by cytoscape.
the class ImportTablePanel method initComponents.
private void initComponents() {
attrTypeButtonGroup = new ButtonGroup();
nodeRadioButton = new JRadioButton("Node");
edgeRadioButton = new JRadioButton("Edge");
networkRadioButton = new JRadioButton("Network");
ontologyComboBox = new JComboBox<>();
browseOntologyButton = new JButton("Browse...");
annotationComboBox = new JComboBox<>();
browseAnnotationButton = new JButton("Browse...");
targetDataSourceTextField = new JTextField();
selectAttributeFileButton = new JButton();
mappingAttributeComboBox = new JComboBox<>();
delimiterLabel = new JLabel("Delimiter:");
delimiterLabel.setHorizontalAlignment(JLabel.RIGHT);
commaCheckBox = new JCheckBox("<html><b><font size=+1 face=Monospaced>,<font></b> <font size=-2>(comma)</font><html>");
semicolonCheckBox = new JCheckBox("<html><b><font size=+1 face=Monospaced>;<font></b> <font size=-2>(semicolon)</font><html>");
spaceCheckBox = new JCheckBox("<html><b><font size=-1 face=Monospaced>SPACE<font></b><html>");
tabCheckBox = new JCheckBox("<html><b><font size=-1 face=Monospaced>TAB<font></b><html>");
otherCheckBox = new JCheckBox("Other:");
otherDelimiterTextField = new JTextField();
defaultInteractionTextField = new JTextField();
attributeFileLabel = new JLabel();
attrTypeButtonGroup.add(nodeRadioButton);
attrTypeButtonGroup.add(edgeRadioButton);
attrTypeButtonGroup.add(networkRadioButton);
/*
* Set tooltips options.
*/
ToolTipManager tp = ToolTipManager.sharedInstance();
tp.setInitialDelay(40);
tp.setDismissDelay(50000);
if (importType == ONTOLOGY_IMPORT) {
/*
* Data Source Panel Layouts.
*/
nodeRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
nodeRadioButton.setMargin(new Insets(0, 0, 0, 0));
nodeRadioButton.setSelected(true);
nodeRadioButton.addActionListener((ActionEvent evt) -> {
attributeRadioButtonActionPerformed(evt);
});
edgeRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
edgeRadioButton.setMargin(new Insets(0, 0, 0, 0));
edgeRadioButton.addActionListener((ActionEvent evt) -> {
attributeRadioButtonActionPerformed(evt);
});
networkRadioButton.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 0));
networkRadioButton.setMargin(new Insets(0, 0, 0, 0));
networkRadioButton.addActionListener((ActionEvent evt) -> {
attributeRadioButtonActionPerformed(evt);
});
}
if (importType == ONTOLOGY_IMPORT) {
panelBuilder = new OntologyPanelBuilder(this, factory, serviceRegistrar);
panelBuilder.buildPanel();
}
if ((importType == TABLE_IMPORT) || (importType == NETWORK_IMPORT)) {
// titleIconLabel.setIcon(SPREADSHEET_ICON_LARGE.getIcon());
attributeFileLabel.setText("Input File");
selectAttributeFileButton.setText("Select File(s)");
selectAttributeFileButton.addActionListener((ActionEvent evt) -> {
try {
setPreviewPanel();
} catch (Exception e) {
JOptionPane.showMessageDialog(serviceRegistrar.getService(CySwingApplication.class).getJFrame(), "<html>Could not read selected file.<p>See <b>Help->Error Dialog</b> for further details.</html>", "Error", JOptionPane.ERROR_MESSAGE);
logger.warn("Could not read selected file.", e);
}
});
}
/*
* Layout data for advanced panel
*/
if (importType == ONTOLOGY_IMPORT) {
mappingAttributeComboBox.setEnabled(true);
mappingAttributeComboBox.addActionListener((ActionEvent evt) -> {
updateTypes(getPreviewPanel().getFileType());
setKeyList();
});
}
final ChangeListener delimitersChangeListener = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent evt) {
otherDelimiterTextField.setEnabled(otherCheckBox.isSelected());
try {
if (!updating)
updatePreview();
} catch (IOException e) {
logger.error("Error on ChangeEvent of checkbox " + ((JCheckBox) evt.getSource()).getText(), e);
}
}
};
commaCheckBox.addChangeListener(delimitersChangeListener);
semicolonCheckBox.addChangeListener(delimitersChangeListener);
spaceCheckBox.addChangeListener(delimitersChangeListener);
tabCheckBox.addChangeListener(delimitersChangeListener);
otherCheckBox.addChangeListener(delimitersChangeListener);
otherDelimiterTextField.addKeyListener(new KeyListener() {
@Override
public void keyPressed(KeyEvent evt) {
}
@Override
public void keyReleased(KeyEvent evt) {
try {
if (otherCheckBox.isSelected())
updatePreview();
} catch (IOException e) {
logger.error("Error on otherDelimiterTextField.keyReleased", e);
}
}
@Override
public void keyTyped(KeyEvent evt) {
}
});
defaultInteractionTextField.setText(TypeUtil.DEFAULT_INTERACTION);
defaultInteractionTextField.setToolTipText("<html>If <b>Default Interaction</b>" + " is selected, this value will be used for <i>Interaction Type</i><br></html>");
globalLayout();
if (basicPanel != null)
basicPanel.repaint();
this.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
getPreviewPanel().disposeEditDialog();
}
});
}
use of javax.swing.ToolTipManager in project cytoscape-impl by cytoscape.
the class URLHandler method initGUI.
private void initGUI() {
final ToolTipManager tipManager = ToolTipManager.sharedInstance();
tipManager.setInitialDelay(1);
tipManager.setDismissDelay(7500);
networkFileComboBox = new JComboBox<>();
networkFileComboBox.setEditable(true);
networkFileComboBox.setName("networkFileComboBox");
networkFileComboBox.setToolTipText("<html><body>You can specify URL by the following:" + "<ul><li>Type URL</li><li>Select from pull down menu</li>" + "<li>Drag & Drop URL from Web Browser</li></ul></body><html>");
networkFileComboBox.setRenderer(new DefaultListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
this.setToolTipText(value != null ? value.toString() : null);
return this;
}
});
networkFileComboBox.setPreferredSize(new Dimension(660, networkFileComboBox.getPreferredSize().height));
networkFileComboBox.setMaximumSize(networkFileComboBox.getPreferredSize());
final JLabel label = new JLabel("Import data from URL:");
updateFieldPanel(panel, label, networkFileComboBox, horizontal);
setTooltip(getTooltip(), label, networkFileComboBox);
}
use of javax.swing.ToolTipManager in project tetrad by cmu-phil.
the class SessionEditorNode method addListeners.
private void addListeners(final SessionEditorNode sessionEditorNode, final SessionNodeWrapper modelNode) {
// Add a mouse listener for popups.
sessionEditorNode.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
ToolTipManager toolTipManager = ToolTipManager.sharedInstance();
toolTipManager.setInitialDelay(750);
sessionEditorNode.getPopup().show(sessionEditorNode, e.getX(), e.getY());
}
e.consume();
}
});
// sessionEditorNode.addMouseMotionListener(new MouseMotionAdapter() {
// public void mouseMoved(MouseEvent e) {
// Point p = e.getPoint();
// if (p.getX() > 40 && p.getY() > 40) {
// ToolTipManager toolTipManager =
// ToolTipManager.sharedInstance();
// toolTipManager.setInitialDelay(750);
// JPopupMenu popup = sessionEditorNode.getPopup();
//
// if (!popup.isShowing()) {
// popup.show(sessionEditorNode, e.getX(), e.getY());
// }
// }
// }
// });
sessionEditorNode.addComponentListener(new ComponentAdapter() {
@Override
public void componentMoved(ComponentEvent e) {
sessionEditorNode.getSimulationStudy().getSession().setSessionChanged(true);
}
});
SessionNode sessionNode = modelNode.getSessionNode();
sessionNode.addSessionListener(new SessionAdapter() {
@Override
public void modelCreated(SessionEvent sessionEvent) {
sessionEditorNode.adjustToModel();
// 5/18/02
if (sessionEditorNode.spawnedEditor() != null) {
EditorWindow editorWindow = sessionEditorNode.spawnedEditor();
editorWindow.closeDialog();
}
}
@Override
public void modelDestroyed(SessionEvent sessionEvent) {
sessionEditorNode.adjustToModel();
// the getModel editor window is closed. jdramsey 5/18/02
if (sessionEditorNode.spawnedEditor() != null) {
EditorWindow editorWindow = sessionEditorNode.spawnedEditor();
editorWindow.closeDialog();
}
}
@Override
public void modelUnclear(SessionEvent sessionEvent) {
try {
if (simulationStudy == null) {
boolean created = sessionEditorNode.createModel(false);
if (!created) {
return;
}
sessionEditorNode.adjustToModel();
}
} catch (Exception e) {
String message = e.getMessage();
message = "I could not make a model for this box, sorry. Maybe the \n" + "parents aren't right or have not been constructed yet.";
e.printStackTrace();
// throw new IllegalArgumentException("I could not make a model for this box, sorry. Maybe the \n" +
// "parents aren't right or have not been constructed yet.");
JOptionPane.showMessageDialog(sessionEditorNode, message);
}
}
});
}
use of javax.swing.ToolTipManager in project gate-core by GateNLP.
the class MainFrame method initGuiComponents.
protected void initGuiComponents() {
this.getContentPane().setLayout(new BorderLayout());
Integer width = Gate.getUserConfig().getInt(GateConstants.MAIN_FRAME_WIDTH, 1024);
Integer height = Gate.getUserConfig().getInt(GateConstants.MAIN_FRAME_HEIGHT, 768);
Rectangle maxDimensions = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
this.setSize(new Dimension(Math.min(width, maxDimensions.width), Math.min(height, maxDimensions.height)));
if (Gate.getUserConfig().getBoolean(GateConstants.MAIN_FRAME_MAXIMIZED))
setExtendedState(JFrame.MAXIMIZED_BOTH);
setIconImages(Arrays.asList(new Image[] { new GATEVersionIcon(256, 256).getImage(), new GATEVersionIcon(128, 128).getImage(), new GATEVersionIcon(64, 64).getImage(), new GATEVersionIcon(48, 48).getImage(), new GATEVersionIcon(32, 32).getImage(), new GATEIcon(22, 22).getImage(), new GATEIcon(16, 16).getImage() }));
resourcesTree = new ResourcesTree();
resourcesTree.setModel(resourcesTreeModel);
resourcesTree.setRowHeight(0);
resourcesTree.setEditable(true);
ResourcesTreeCellRenderer treeCellRenderer = new ResourcesTreeCellRenderer();
resourcesTree.setCellRenderer(treeCellRenderer);
resourcesTree.setCellEditor(new ResourcesTreeCellEditor(resourcesTree, treeCellRenderer));
resourcesTree.setInvokesStopCellEditing(true);
resourcesTree.setRowHeight(0);
// expand all nodes
resourcesTree.expandRow(0);
resourcesTree.expandRow(1);
resourcesTree.expandRow(2);
resourcesTree.expandRow(3);
resourcesTree.expandRow(4);
resourcesTree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
resourcesTree.setEnabled(true);
ToolTipManager.sharedInstance().registerComponent(resourcesTree);
resourcesTreeScroll = new JScrollPane(resourcesTree);
resourcesTree.setDragEnabled(true);
resourcesTree.setTransferHandler(new TransferHandler() {
// drag and drop that export a list of the selected documents
@Override
public int getSourceActions(JComponent c) {
return COPY;
}
@Override
protected Transferable createTransferable(JComponent c) {
TreePath[] paths = resourcesTree.getSelectionPaths();
if (paths == null) {
return new StringSelection("");
}
Handle handle;
List<String> documentsNames = new ArrayList<String>();
for (TreePath path : paths) {
if (path != null) {
Object value = path.getLastPathComponent();
value = ((DefaultMutableTreeNode) value).getUserObject();
if (value instanceof Handle) {
handle = (Handle) value;
if (handle.getTarget() instanceof Document) {
documentsNames.add(((Document) handle.getTarget()).getName());
}
}
}
}
return new StringSelection("ResourcesTree" + Arrays.toString(documentsNames.toArray()));
}
@Override
protected void exportDone(JComponent c, Transferable data, int action) {
}
@Override
public boolean canImport(JComponent c, DataFlavor[] flavors) {
return false;
}
@Override
public boolean importData(JComponent c, Transferable t) {
return false;
}
});
lowerScroll = new JScrollPane();
JPanel lowerPane = new JPanel();
lowerPane.setLayout(new OverlayLayout(lowerPane));
JPanel animationPane = new JPanel();
animationPane.setOpaque(false);
animationPane.setLayout(new BoxLayout(animationPane, BoxLayout.X_AXIS));
JPanel vBox = new JPanel();
vBox.setLayout(new BoxLayout(vBox, BoxLayout.Y_AXIS));
vBox.setOpaque(false);
JPanel hBox = new JPanel();
hBox.setLayout(new BoxLayout(hBox, BoxLayout.X_AXIS));
hBox.setOpaque(false);
vBox.add(Box.createVerticalGlue());
vBox.add(animationPane);
hBox.add(vBox);
hBox.add(Box.createHorizontalGlue());
lowerPane.add(hBox);
lowerPane.add(lowerScroll);
animator = new CartoonMinder(animationPane);
Thread thread = new Thread(Thread.currentThread().getThreadGroup(), animator, "MainFrame animation");
thread.setDaemon(true);
thread.setPriority(Thread.MIN_PRIORITY);
thread.start();
leftSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, resourcesTreeScroll, lowerPane);
leftSplit.setResizeWeight(0.7);
leftSplit.setContinuousLayout(true);
leftSplit.setOneTouchExpandable(true);
// Create a new logArea and redirect the Out and Err output to it.
logArea = new LogArea();
// Out has been redirected to the logArea
Out.prln("GATE " + Main.version + " build " + Main.build + " started at " + new Date().toString());
Out.prln("and using Java " + System.getProperty("java.version") + " " + System.getProperty("java.vendor") + " on " + System.getProperty("os.name") + " " + System.getProperty("os.arch") + " " + System.getProperty("os.version") + ".");
mainTabbedPane = new XJTabbedPane(JTabbedPane.TOP);
mainTabbedPane.insertTab("Messages", null, logArea.getComponentToDisplay(), "GATE log", 0);
logHighlighter = new TabHighlighter(mainTabbedPane, logArea.getComponentToDisplay(), Color.red);
mainSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftSplit, mainTabbedPane);
mainSplit.setDividerLocation(leftSplit.getPreferredSize().width + 10);
this.getContentPane().add(mainSplit, BorderLayout.CENTER);
mainSplit.setContinuousLayout(true);
mainSplit.setOneTouchExpandable(true);
// status and progress bars
statusBar = new JLabel("Welcome to GATE!");
statusBar.setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 0));
UIManager.put("ProgressBar.cellSpacing", 0);
progressBar = new JProgressBar(JProgressBar.HORIZONTAL);
progressBar.setBorder(BorderFactory.createEmptyBorder());
progressBar.setForeground(new Color(150, 75, 150));
progressBar.setStringPainted(false);
globalProgressBar = new JProgressBar(JProgressBar.HORIZONTAL);
globalProgressBar.setBorder(BorderFactory.createEmptyBorder());
globalProgressBar.setForeground(new Color(150, 75, 150));
globalProgressBar.setStringPainted(true);
JPanel southBox = new JPanel(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.WEST;
gbc.weightx = 1;
southBox.add(statusBar, gbc);
gbc.insets = new Insets(0, 3, 0, 3);
gbc.anchor = GridBagConstraints.EAST;
gbc.weightx = 0;
southBox.add(progressBar, gbc);
southBox.add(globalProgressBar, gbc);
this.getContentPane().add(southBox, BorderLayout.SOUTH);
progressBar.setVisible(false);
globalProgressBar.setVisible(false);
// extra stuff
newResourceDialog = new NewResourceDialog(this, "Resource parameters", true);
// build the Help->About dialog
JPanel splashBox = new JPanel();
splashBox.setBackground(Color.WHITE);
splashBox.setLayout(new GridBagLayout());
GridBagConstraints constraints = new GridBagConstraints();
constraints.weightx = 1;
constraints.insets = new Insets(2, 2, 2, 2);
constraints.gridy = 0;
constraints.fill = GridBagConstraints.BOTH;
JLabel gifLbl = new JLabel(getIcon("splash"));
splashBox.add(gifLbl, constraints);
constraints.gridy = 2;
constraints.gridwidth = 2;
constraints.fill = GridBagConstraints.HORIZONTAL;
String splashHtml;
try {
splashHtml = Files.getGateResourceAsString("splash.html");
} catch (IOException e) {
splashHtml = "GATE";
log.error("Couldn't get splash.html resource.", e);
}
JLabel htmlLbl = new JLabel(splashHtml);
htmlLbl.setHorizontalAlignment(SwingConstants.CENTER);
splashBox.add(htmlLbl, constraints);
constraints.gridy = 3;
htmlLbl = new JLabel("<HTML><FONT color=\"blue\">Version <B>" + Main.version + "</B></FONT>" + ", <FONT color=\"red\">build <B>" + Main.build + "</B></FONT>" + "<P><B>JVM version</B>: " + System.getProperty("java.version") + " from " + System.getProperty("java.vendor") + "</HTML>");
constraints.fill = GridBagConstraints.HORIZONTAL;
splashBox.add(htmlLbl, constraints);
constraints.gridy = 4;
constraints.gridwidth = 2;
constraints.fill = GridBagConstraints.NONE;
final JButton okButton = new JButton("OK");
okButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
splash.setVisible(false);
}
});
okButton.setBackground(Color.white);
splashBox.add(okButton, constraints);
splash = new Splash(this, splashBox);
// make Enter and Escape keys closing the splash window
splash.getRootPane().setDefaultButton(okButton);
InputMap inputMap = ((JComponent) splash.getContentPane()).getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW);
ActionMap actionMap = ((JComponent) splash.getContentPane()).getActionMap();
inputMap.put(KeyStroke.getKeyStroke("ENTER"), "Apply");
actionMap.put("Apply", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
okButton.doClick();
}
});
inputMap.put(KeyStroke.getKeyStroke("ESCAPE"), "Cancel");
actionMap.put("Cancel", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
okButton.doClick();
}
});
// MENUS
menuBar = new JMenuBar();
JMenu fileMenu = new XJMenu("File", null, this);
fileMenu.setMnemonic(KeyEvent.VK_F);
LiveMenu newAPPMenu = new LiveMenu(LiveMenu.APP);
newAPPMenu.setText("New Application");
newAPPMenu.setIcon(getIcon("applications"));
fileMenu.add(newAPPMenu);
LiveMenu newLRMenu = new LiveMenu(LiveMenu.LR);
newLRMenu.setText("New Language Resource");
newLRMenu.setIcon(getIcon("lrs"));
fileMenu.add(newLRMenu);
LiveMenu newPRMenu = new LiveMenu(LiveMenu.PR);
newPRMenu.setText("New Processing Resource");
newPRMenu.setIcon(getIcon("prs"));
fileMenu.add(newPRMenu);
final JMenu dsMenu = new XJMenu("Datastores", "Repositories for large data", this);
dsMenu.setIcon(getIcon("datastores"));
dsMenu.add(new XJMenuItem(new NewDSAction(), this));
dsMenu.add(new XJMenuItem(new OpenDSAction(), this));
fileMenu.add(dsMenu);
fileMenu.addSeparator();
fileMenu.add(new ReadyMadeMenu());
fileMenu.add(new XJMenuItem(new LoadResourceFromFileAction(), this));
RecentAppsMenu recentAppsMenu = new RecentAppsMenu();
fileMenu.add(recentAppsMenu);
/*final JMenu loadANNIEMenu = new XJMenu("Load ANNIE System",
"Application that adds morphosyntaxic and semantic annotations", this);
loadANNIEMenu.setIcon(getIcon("annie-application"));
loadANNIEMenu.add(new XJMenuItem(new LoadANNIEWithDefaultsAction(), this));
loadANNIEMenu
.add(new XJMenuItem(new LoadANNIEWithoutDefaultsAction(), this));
fileMenu.add(loadANNIEMenu);
// LingPipe action
fileMenu.add(new XJMenuItem(new LoadApplicationAction(
"Load LingPipe System", "LingPipe", "resources/lingpipe.gapp"),
this));
// OpenNLP action
fileMenu.add(new XJMenuItem(new LoadApplicationAction(
"Load OpenNLP System", "OpenNLP", "resources/opennlp.gapp"), this));
*/
fileMenu.add(new XJMenuItem(new ManagePluginsAction(), this));
if (!Gate.runningOnMac()) {
fileMenu.addSeparator();
fileMenu.add(new XJMenuItem(new ExitGateAction(), this));
}
menuBar.add(fileMenu);
JMenu optionsMenu = new XJMenu("Options", null, this);
optionsMenu.setMnemonic(KeyEvent.VK_O);
boolean optionsMenuHasEntries = false;
optionsDialog = new OptionsDialog(MainFrame.this);
if (!Gate.runningOnMac()) {
optionsMenu.add(new XJMenuItem(new AbstractAction("Configuration") {
private static final long serialVersionUID = 1L;
{
putValue(SHORT_DESCRIPTION, "Edit GATE options");
}
@Override
public void actionPerformed(ActionEvent evt) {
optionsDialog.showDialog();
optionsDialog.dispose();
}
}, this));
optionsMenuHasEntries = true;
}
if (optionsMenuHasEntries) {
menuBar.add(optionsMenu);
}
ToolsMenu toolsMenu = new ToolsMenu("Tools", null, this);
toolsMenu.setMnemonic(KeyEvent.VK_T);
toolsMenu.add(new XJMenuItem(new NewAnnotDiffAction(), this));
try {
// Check if log4j is present on the classpath, in order to avoid failures
// in cases when running the GATE GUI in the same JVM with a system which
// uses SLF4J and the log4j bridge.
// The log4j-over-slf4j bridge does not include org.apache.log4j.Appender, so
// if the class is not present we assume the lack of a log4j jar in the classpath
// and do not populate the menu.
Class.forName("org.apache.log4j.Appender");
final JMenuItem reportClearMenuItem = new XJMenuItem(new AbstractAction("Clear Profiling History") {
{
putValue(SHORT_DESCRIPTION, "Clear profiling history otherwise the report is cumulative.");
}
@Override
public void actionPerformed(ActionEvent evt) {
// create a new log file
File logFile = new File(System.getProperty("java.io.tmpdir"), "gate-benchmark-log.txt");
logFile.deleteOnExit();
if (logFile.exists() && !logFile.delete()) {
log.info("Error when deleting the file:\n" + logFile.getAbsolutePath());
}
}
}, this);
JMenu reportMenu = new XJMenu("Profiling Reports", "Generates profiling reports from processing resources", this);
reportMenu.setIcon(getIcon("gazetteer"));
reportMenu.add(new XJMenuItem(new AbstractAction("Start Profiling Applications") {
{
putValue(SHORT_DESCRIPTION, "Toggles the profiling of processing resources");
}
// stores the value held by the benchmarking switch before we started
// this profiling run.
boolean benchmarkWasEnabled;
@Override
public void actionPerformed(ActionEvent evt) {
if (getValue(NAME).equals("Start Profiling Applications")) {
reportClearMenuItem.setEnabled(false);
// store old value of benchmark switch
benchmarkWasEnabled = Benchmark.isBenchmarkingEnabled();
Benchmark.setBenchmarkingEnabled(true);
Layout layout = new PatternLayout("%m%n");
File logFile = new File(System.getProperty("java.io.tmpdir"), "gate-benchmark-log.txt");
logFile.deleteOnExit();
Appender appender;
try {
appender = new FileAppender(layout, logFile.getAbsolutePath(), true);
} catch (IOException e) {
e.printStackTrace();
return;
}
appender.setName("gate-benchmark");
Benchmark.logger.addAppender(appender);
putValue(NAME, "Stop Profiling Applications");
} else {
// reset old value of benchmark switch - i.e. if benchmarking was
// disabled before the user selected "start profiling" then we
// disable it again now, but if it was already enabled before they
// started profiling then we assume it was turned on explicitly and
// leave it alone.
Benchmark.setBenchmarkingEnabled(benchmarkWasEnabled);
Benchmark.logger.removeAppender("gate-benchmark");
putValue(NAME, "Start Profiling Applications");
reportClearMenuItem.setEnabled(true);
}
}
}, this));
reportMenu.add(reportClearMenuItem);
reportMenu.add(new XJMenuItem(new AbstractAction("Help on this tool") {
@Override
public void actionPerformed(ActionEvent e) {
showHelpFrame("chap:profiling", "Profiling Processing Resources");
}
}, this));
reportMenu.addSeparator();
final JCheckBoxMenuItem reportZeroTimesCheckBox = new JCheckBoxMenuItem();
reportZeroTimesCheckBox.setAction(new AbstractAction("Report Zero Time Entries") {
@Override
public void actionPerformed(ActionEvent evt) {
Gate.getUserConfig().put(MainFrame.class.getName() + ".reportzerotime", reportZeroTimesCheckBox.isSelected());
}
});
reportZeroTimesCheckBox.setSelected(Gate.getUserConfig().getBoolean(MainFrame.class.getName() + ".reportzerotimes"));
ButtonGroup group = new ButtonGroup();
final JRadioButtonMenuItem reportSortExecution = new JRadioButtonMenuItem();
reportSortExecution.setAction(new AbstractAction("Sort by Execution") {
@Override
public void actionPerformed(ActionEvent evt) {
Gate.getUserConfig().put(MainFrame.class.getName() + ".reportsorttime", false);
}
});
reportSortExecution.setSelected(!Gate.getUserConfig().getBoolean(MainFrame.class.getName() + ".reportsorttime"));
group.add(reportSortExecution);
final JRadioButtonMenuItem reportSortTime = new JRadioButtonMenuItem();
reportSortTime.setAction(new AbstractAction("Sort by Time") {
@Override
public void actionPerformed(ActionEvent evt) {
Gate.getUserConfig().put(MainFrame.class.getName() + ".reportsorttime", true);
}
});
reportSortTime.setSelected(Gate.getUserConfig().getBoolean(MainFrame.class.getName() + ".reportsorttime"));
group.add(reportSortTime);
reportMenu.add(new XJMenuItem(new AbstractAction("Report on Processing Resources") {
{
putValue(SHORT_DESCRIPTION, "Report time taken by each processing resource");
}
@Override
public void actionPerformed(ActionEvent evt) {
PRTimeReporter report = new PRTimeReporter();
report.setBenchmarkFile(new File(System.getProperty("java.io.tmpdir"), "gate-benchmark-log.txt"));
report.setSuppressZeroTimeEntries(!reportZeroTimesCheckBox.isSelected());
report.setSortOrder(reportSortTime.isSelected() ? PRTimeReporter.SORT_TIME_TAKEN : PRTimeReporter.SORT_EXEC_ORDER);
try {
report.executeReport();
} catch (BenchmarkReportException e) {
e.printStackTrace();
return;
}
showHelpFrame("file://" + report.getReportFile(), "processing times report");
}
}, this));
reportMenu.add(reportZeroTimesCheckBox);
reportMenu.add(reportSortTime);
reportMenu.add(reportSortExecution);
reportMenu.addSeparator();
reportMenu.add(new XJMenuItem(new AbstractAction("Report on Documents Processed") {
{
putValue(SHORT_DESCRIPTION, "Report most time consuming documents");
}
@Override
public void actionPerformed(ActionEvent evt) {
DocTimeReporter report = new DocTimeReporter();
report.setBenchmarkFile(new File(System.getProperty("java.io.tmpdir"), "gate-benchmark-log.txt"));
String maxDocs = Gate.getUserConfig().getString(MainFrame.class.getName() + ".reportmaxdocs");
if (maxDocs != null) {
report.setMaxDocumentInReport((maxDocs.equals("All")) ? DocTimeReporter.ALL_DOCS : Integer.parseInt(maxDocs));
}
String prRegex = Gate.getUserConfig().getString(MainFrame.class.getName() + ".reportprregex");
if (prRegex != null) {
report.setPRMatchingRegex((prRegex.equals("")) ? DocTimeReporter.MATCH_ALL_PR_REGEX : prRegex);
}
try {
report.executeReport();
} catch (BenchmarkReportException e) {
e.printStackTrace();
return;
}
showHelpFrame("file://" + report.getReportFile(), "documents time report");
}
}, this));
String maxDocs = Gate.getUserConfig().getString(MainFrame.class.getName() + ".reportmaxdocs");
if (maxDocs == null) {
maxDocs = "10";
}
reportMenu.add(new XJMenuItem(new AbstractAction("Set Max Documents (" + maxDocs + ")") {
@Override
public void actionPerformed(ActionEvent evt) {
Object response = JOptionPane.showInputDialog(instance, "Set the maximum of documents to report", "Report options", JOptionPane.QUESTION_MESSAGE, null, new Object[] { "All", "10", "20", "30", "40", "50", "100" }, "10");
if (response != null) {
Gate.getUserConfig().put(MainFrame.class.getName() + ".reportmaxdocs", response);
putValue(NAME, "Set Max Documents (" + response + ")");
}
}
}, this));
String prRegex = Gate.getUserConfig().getString(MainFrame.class.getName() + ".reportprregex");
if (prRegex == null || prRegex.equals("")) {
prRegex = "All";
}
reportMenu.add(new XJMenuItem(new AbstractAction("Set PR Matching Regex (" + prRegex + ")") {
@Override
public void actionPerformed(ActionEvent evt) {
Object response = JOptionPane.showInputDialog(instance, "Set the processing resource regex filter\n" + "Leave empty to not filter", "Report options", JOptionPane.QUESTION_MESSAGE);
if (response != null) {
Gate.getUserConfig().put(MainFrame.class.getName() + ".reportprregex", response);
if (response.equals("")) {
response = "All";
}
putValue(NAME, "Set PR Matching Regex (" + response + ")");
}
}
}, this));
toolsMenu.add(reportMenu);
} catch (ClassNotFoundException e) {
log.warn("log4j.jar not found on the classpath, disabling profiling reports.");
}
toolsMenu.add(new XJMenuItem(new NewBootStrapAction(), this));
final JMenu corpusEvalMenu = new XJMenu("Corpus Benchmark", "Compares processed and human-annotated annotations", this);
corpusEvalMenu.setIcon(getIcon("corpus-benchmark"));
toolsMenu.add(corpusEvalMenu);
corpusEvalMenu.add(new XJMenuItem(new NewCorpusEvalAction(), this));
corpusEvalMenu.addSeparator();
corpusEvalMenu.add(new XJMenuItem(new GenerateStoredCorpusEvalAction(), this));
corpusEvalMenu.addSeparator();
corpusEvalMenu.add(new XJMenuItem(new StoredMarkedCorpusEvalAction(), this));
corpusEvalMenu.add(new XJMenuItem(new CleanMarkedCorpusEvalAction(), this));
corpusEvalMenu.addSeparator();
verboseModeItem = new JCheckBoxMenuItem(new VerboseModeCorpusEvalToolAction());
corpusEvalMenu.add(verboseModeItem);
toolsMenu.staticItemsAdded();
menuBar.add(toolsMenu);
JMenu helpMenu = new XJMenu("Help", null, MainFrame.this);
helpMenu.setMnemonic(KeyEvent.VK_H);
helpMenu.add(new XJMenuItem(new HelpUserGuideAction(), this));
helpMenu.add(new XJMenuItem(new HelpUserGuideInContextAction(), this));
helpMenu.add(new XJMenuItem(new AbstractAction("Keyboard Shortcuts") {
@Override
public void actionPerformed(ActionEvent e) {
showHelpFrame("sec:developer:keyboard", "shortcuts");
}
}, this));
helpMenu.addSeparator();
helpMenu.add(new XJMenuItem(new AbstractAction("Using GATE Developer") {
{
this.putValue(Action.SHORT_DESCRIPTION, "To read first");
}
@Override
public void actionPerformed(ActionEvent e) {
showHelpFrame("chap:developer", "Using GATE Developer");
}
}, this));
helpMenu.add(new XJMenuItem(new AbstractAction("Demo Movies") {
{
this.putValue(Action.SHORT_DESCRIPTION, "Movie tutorials");
}
@Override
public void actionPerformed(ActionEvent e) {
showHelpFrame("http://gate.ac.uk/demos/developer-videos/", "movies");
}
}, this));
helpMenu.add(new XJMenuItem(new HelpMailingListAction(), this));
helpMenu.addSeparator();
JCheckBoxMenuItem toggleToolTipsCheckBoxMenuItem = new JCheckBoxMenuItem(new ToggleToolTipsAction());
javax.swing.ToolTipManager toolTipManager = ToolTipManager.sharedInstance();
if (Gate.getUserConfig().getBoolean(MainFrame.class.getName() + ".hidetooltips")) {
toolTipManager.setEnabled(false);
toggleToolTipsCheckBoxMenuItem.setSelected(false);
} else {
toolTipManager.setEnabled(true);
toggleToolTipsCheckBoxMenuItem.setSelected(true);
}
helpMenu.add(toggleToolTipsCheckBoxMenuItem);
helpMenu.add(new XJMenuItem(new AbstractAction("What's New") {
{
this.putValue(Action.SHORT_DESCRIPTION, "List new features and important changes");
}
@Override
public void actionPerformed(ActionEvent e) {
showHelpFrame("chap:changes", "changes");
}
}, this));
if (!Gate.runningOnMac()) {
helpMenu.add(new XJMenuItem(new HelpAboutAction(), this));
}
menuBar.add(helpMenu);
this.setJMenuBar(menuBar);
// popups
lrsPopup = new XJPopupMenu();
LiveMenu lrsMenu = new LiveMenu(LiveMenu.LR);
lrsMenu.setText("New");
lrsPopup.add(lrsMenu);
guiRoots.add(lrsPopup);
guiRoots.add(lrsMenu);
prsPopup = new XJPopupMenu();
LiveMenu prsMenu = new LiveMenu(LiveMenu.PR);
prsMenu.setText("New");
prsPopup.add(prsMenu);
guiRoots.add(prsPopup);
guiRoots.add(prsMenu);
dssPopup = new XJPopupMenu();
dssPopup.add(new NewDSAction());
dssPopup.add(new OpenDSAction());
guiRoots.add(dssPopup);
// TOOLBAR
toolbar = new JToolBar(JToolBar.HORIZONTAL);
toolbar.setFloatable(false);
JButton button = new JButton(new LoadResourceFromFileAction());
button.setToolTipText(button.getText());
button.setText("");
toolbar.add(button);
toolbar.addSeparator();
try {
JButton annieMenu = new JButton(new LoadApplicationAction("ANNIE", "annie-application", new ResourceReference(new URI("creole://uk.ac.gate.plugins;annie;" + gate.Main.version + "/resources/" + ANNIEConstants.DEFAULT_FILE))));
annieMenu.setText("");
annieMenu.setToolTipText("Load ANNIE");
toolbar.add(annieMenu);
toolbar.addSeparator();
} catch (URISyntaxException e) {
// should be impossible
}
LiveMenu tbNewLRMenu = new LiveMenu(LiveMenu.LR);
JMenuButton menuButton = new JMenuButton(tbNewLRMenu);
menuButton.setToolTipText("New Language Resource");
menuButton.setIcon(getIcon("lrs"));
toolbar.add(menuButton);
LiveMenu tbNewPRMenu = new LiveMenu(LiveMenu.PR);
menuButton = new JMenuButton(tbNewPRMenu);
menuButton.setToolTipText("New Processing Resource");
menuButton.setIcon(getIcon("prs"));
toolbar.add(menuButton);
LiveMenu tbNewAppMenu = new LiveMenu(LiveMenu.APP);
menuButton = new JMenuButton(tbNewAppMenu);
menuButton.setToolTipText("New Application");
menuButton.setIcon(getIcon("applications"));
toolbar.add(menuButton);
toolbar.addSeparator();
JPopupMenu tbDsMenu = new JPopupMenu();
tbDsMenu.add(new NewDSAction());
tbDsMenu.add(new OpenDSAction());
menuButton = new JMenuButton(tbDsMenu);
menuButton.setToolTipText("Datastores");
menuButton.setIcon(getIcon("datastores"));
toolbar.add(menuButton);
toolbar.addSeparator();
button = new JButton(new ManagePluginsAction());
button.setToolTipText(button.getText());
button.setText("");
toolbar.add(button);
toolbar.addSeparator();
button = new JButton(new NewAnnotDiffAction());
button.setToolTipText(button.getText());
button.setText("");
toolbar.add(button);
toolbar.add(Box.createHorizontalGlue());
this.getContentPane().add(toolbar, BorderLayout.NORTH);
}
Aggregations