gate.gui.PRViewer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gate-core Show documentation
Show all versions of gate-core Show documentation
GATE - general achitecture for text engineering - is open source
software capable of solving almost any text processing problem. This
artifact enables you to embed the core GATE Embedded with its essential
dependencies. You will able to use the GATE Embedded API and load and
store GATE XML documents. This artifact is the perfect dependency for
CREOLE plugins or for applications that need to customize the GATE
dependencies due to confict with their own dependencies or for lower
footprint.
The newest version!
/*
* Copyright (c) 1995-2012, The University of Sheffield. See the file
* COPYRIGHT.txt in the software or at http://gate.ac.uk/gate/COPYRIGHT.txt
*
* This file is part of GATE (see http://gate.ac.uk/), and is free
* software, licenced under the GNU Library General Public License,
* Version 2, June 1991 (in the distribution as file licence.html,
* and also available at http://gate.ac.uk/gate/licence.html).
*
* Valentin Tablan 27/02/2002
*
* $Id: PRViewer.java 17606 2014-03-09 12:12:49Z markagreenwood $
*
*/
package gate.gui;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.AbstractAction;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import gate.Gate;
import gate.Resource;
import gate.creole.AbstractVisualResource;
import gate.creole.ResourceData;
import gate.creole.ResourceInstantiationException;
import gate.creole.metadata.CreoleResource;
import gate.creole.metadata.GuiType;
import gate.swing.XJTable;
import gate.util.GateRuntimeException;
@SuppressWarnings("serial")
@CreoleResource(name = "Initialisation Parameters", guiType = GuiType.LARGE,
resourceDisplayed = "gate.Resource", mainViewer = true)
public class PRViewer extends AbstractVisualResource {
public PRViewer() {
}
@Override
public Resource init() throws ResourceInstantiationException {
initLocalData();
initGuiComponents();
initListeners();
return this;
}
protected void initLocalData(){
}
protected void initGuiComponents(){
setLayout(new BorderLayout());
editor = new ResourceParametersEditor();
editor.setEditable(false);
editor.setAutoResizeMode(XJTable.AUTO_RESIZE_LAST_COLUMN);
JScrollPane scroller = new JScrollPane(editor);
scroller.setAlignmentX(Component.LEFT_ALIGNMENT);
scroller.setAlignmentY(Component.TOP_ALIGNMENT);
add(scroller, BorderLayout.CENTER);
}
protected void initListeners(){
editor.addMouseListener(new MouseAdapter() {
private void handleMouseEvent(MouseEvent e){
if(e.isPopupTrigger()){
int row = editor.rowAtPoint(e.getPoint());
int col = editor.columnAtPoint(e.getPoint());
JPopupMenu popup =new JPopupMenu();
popup.add(new CopyValueAction(row, col));
popup.show(editor,e.getX(), e.getY());
}
}
@Override
public void mousePressed(MouseEvent e) {
handleMouseEvent(e);
}
@Override
public void mouseReleased(MouseEvent e) {
handleMouseEvent(e);
}
@Override
public void mouseClicked(MouseEvent e) {
handleMouseEvent(e);
}
});
}
@Override
public void cleanup(){
super.cleanup();
editor.cleanup();
}
@Override
public void setTarget(Object target){
if(target == null) return;
if(!(target instanceof Resource)){
throw new GateRuntimeException(this.getClass().getName() +
" can only be used to display " +
Resource.class.getName() +
"\n" + target.getClass().getName() +
" is not a " +
Resource.class.getName() + "!");
}
Resource pr = (Resource)target;
ResourceData rData =
Gate.getCreoleRegister().get(pr.getClass().getName());
if(rData != null) {
editor.init(pr, rData.getParameterList().getInitimeParameters());
} else {
editor.init(pr, null);
}
editor.removeCreoleListenerLink();
}
protected ResourceParametersEditor editor;
protected class CopyValueAction extends AbstractAction{
private int row, column;
public CopyValueAction (int row, int column){
super("Copy value");
putValue(SHORT_DESCRIPTION,
"Copies the value of the cell to the clipboard.");
this.row = row;
this.column = column;
}
@Override
public void actionPerformed(ActionEvent e) {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Object value = editor.getValueAt(row, column);
String valStr;
if(value instanceof ParameterDisjunction){
valStr = ((ParameterDisjunction)value).getName();
}else if(value instanceof Boolean){
valStr = ((Boolean)value) ? "Required parameter" : "Optional parameter";
}else{
valStr = value.toString();
}
StringSelection data = new StringSelection(valStr);
clipboard.setContents(data, data);
}
}
}