summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjanna <unknown>2003-11-25 12:28:20 +0000
committerjanna <unknown>2003-11-25 12:28:20 +0000
commit3c944827699b62a5620e433f3069675f99f46787 (patch)
tree0cf76880d42804faaa414f213c957f687c8a5d42 /src
parent6705780cc27314bfa0d3a9ed5c9217d5043def02 (diff)
*** empty log message ***
Diffstat (limited to 'src')
-rw-r--r--src/JavaGUI/DynamicTree2.java4
-rw-r--r--src/JavaGUI/GFEditor2.java131
2 files changed, 121 insertions, 14 deletions
diff --git a/src/JavaGUI/DynamicTree2.java b/src/JavaGUI/DynamicTree2.java
index 9abd9671d..9d325772d 100644
--- a/src/JavaGUI/DynamicTree2.java
+++ b/src/JavaGUI/DynamicTree2.java
@@ -18,7 +18,7 @@ public class DynamicTree2 extends JPanel implements KeyListener,
public JTree tree;
public int oldSelection = 0;
private Toolkit toolkit = Toolkit.getDefaultToolkit();
- JPopupMenu popup = new JPopupMenu();
+ public JPopupMenu popup = new JPopupMenu();
JMenuItem menuItem;
Timer timer = new Timer(500, this);
MouseEvent m;
@@ -225,7 +225,7 @@ public class DynamicTree2 extends JPanel implements KeyListener,
void maybeShowPopup(MouseEvent e) {
if (GFEditor2.debug) System.out.println("may be!");
if (e.isPopupTrigger()) {
- m=e;
+ m = e;
timer.start();
}
}
diff --git a/src/JavaGUI/GFEditor2.java b/src/JavaGUI/GFEditor2.java
index 70a25fd5d..ec3fd5fd7 100644
--- a/src/JavaGUI/GFEditor2.java
+++ b/src/JavaGUI/GFEditor2.java
@@ -1,6 +1,7 @@
//package javaGUI;
import java.awt.*;
+import java.beans.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
@@ -11,9 +12,17 @@ import java.util.*;
//import gfWindow.GrammarFilter;
public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
- KeyListener {
+ KeyListener, FocusListener {
+
+ public JPopupMenu popup2 = new JPopupMenu();
+ public JMenuItem menuItem2;
+ public static JTextField field = new JTextField("textField!");
+ public javax.swing.Timer timer2 = new javax.swing.Timer(500, this);
+ public MouseEvent m2;
+ public static String selectedText="";
public static boolean debug = false;
+ public static boolean debug3 = false;
public static boolean debug2 = false;
public static boolean selectionCheck = false;
public static String focusPosition = "";
@@ -21,6 +30,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
public static Vector currentPosition = new Vector();
public static int selStart = -1;
public static int selEnd = -1;
+ //public static int oldSelStart = 0;
public static String restString = "";
public static int currentLength = 0;
public static int newLength = 0;
@@ -142,6 +152,12 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
endProgram();
}
});
+
+ //Add listener to components that can bring up popup menus.
+ MouseListener popupListener2 = new PopupListener();
+ output.addMouseListener(popupListener2);
+ timer2.setRepeats(false);
+
setJMenuBar(menuBar);
setTitle("GF Syntax Editor");
viewMenu.setToolTipText("View settings");
@@ -246,10 +262,14 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
output.setEditable(false);
output.setLineWrap(true);
output.setWrapStyleWord(true);
-// output.setSelectionColor(Color.green);
- output.setSelectionColor(Color.white);
+ output.setSelectionColor(Color.green);
+// output.setSelectionColor(Color.white);
// output.setFont(new Font("Arial Unicode MS", Font.PLAIN, 17));
output.setFont(new Font(null, Font.PLAIN, 17));
+ field.setFont(new Font(null, Font.PLAIN, 17));
+ field.setFocusable(true);
+ field.addKeyListener(this);
+ field.addFocusListener(this);
// System.out.println(output.getFont().getFontName());
gfCommand.setToolTipText("Sending a command to GF");
read.setToolTipText("Refining with term or linearization from typed string or file");
@@ -593,7 +613,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
result = fromProc.readLine();
if (debug) System.out.println("6 "+result);
}
- if (newObject) formLin();
+ if (newObject) formLin();
result = fromProc.readLine();
if (debug) System.out.println("6 "+result);
} catch(IOException e){ }
@@ -910,6 +930,14 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
modify.setSelectedIndex(0);
}
}
+ if (obj==timer2){
+ if (debug3) System.out.println("changing pop-up menu2!");
+ popup2.removeAll();
+ for (int i = 0; i<listModel.size() ; i++)
+ addMenuItem(listModel.elementAt(i).toString());
+ popup2.show(m2.getComponent(), m2.getX(), m2.getY());
+ }
+
/* if ( obj == mode ) {
if (!mode.getSelectedItem().equals("Menus"))
{
@@ -923,6 +951,12 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
if (Class.forName("javax.swing.AbstractButton").isInstance(obj)) {
String name =((AbstractButton)obj).getActionCommand();
+ if (name.equals("popupMenuItem")){
+ treeChanged = true;
+ send((String)commands.elementAt
+ (popup2.getComponentIndex((JMenuItem)(ae.getSource()))));
+ }
+
if ( name.equals("quit")) {
endProgram();
}
@@ -1434,9 +1468,24 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
/** Handle the key pressed event. */
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
- if (keyCode == 10) {
+ Object obj = e.getSource();
+ if ((keyCode == 10)&&(obj==list)) {
listAction(list.getSelectedIndex());
}
+ // Processing Enter:
+ if ((keyCode == 10)&&(obj==field)) {
+ getLayeredPane().remove(field);
+ treeChanged = true;
+ send("p "+field.getText());
+ System.out.println("sending parse string: "+field.getText());
+ repaint();
+ }
+ // Processing Escape:
+ if ((keyCode == 27)&&(obj==field)) {
+ getLayeredPane().remove(field);
+ repaint();
+ }
+
}
/** Handle the key typed event. */
public void keyTyped(KeyEvent e) {
@@ -1474,16 +1523,18 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
int i = outputVector.size()-1;
int start = output.getSelectionStart();
int end = output.getSelectionEnd();
- if (debug2)
- System.out.println("SELECTION START POSITION: "+start);
- if (debug2)
- System.out.println("SELECTION END POSITION: "+end);
+ if (debug3)
+ System.out.println("SELECTION START POSITION: "+start);
+ if (debug3)
+ System.out.println("SELECTION END POSITION: "+end);
+ if (debug3)
+ System.out.println("CARET POSITION: "+output.getCaretPosition());
if ((debug2)&&(end>0&&(end<output.getText().length())))
System.out.println("CHAR: "+output.getText().charAt(end));
// not null selection:
- if (start<output.getText().length()-1)
+ if ((i>-1)&&(start<output.getText().length()-1))
{
- // if (debug2)
+ if (debug2)
for (int k=0; k<outputVector.size(); k++)
{
System.out.print("element: "+k+" begin "+((MarkedArea)outputVector.elementAt(k)).begin+" ");
@@ -1555,7 +1606,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
System.out.println("SELECTEDTEXT: "+position+"\n");
treeChanged = true;
send("mp "+position);
- }
+ }
else
// after:
if (debug2)
@@ -1717,6 +1768,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
if (selectionEnd>-1)
try {
output.getHighlighter().addHighlight(selStart+oldLength, selEnd+oldLength+1, new DefaultHighlighter.DefaultHighlightPainter(Color.green) );
+ selectedText = output.getText().substring(selStart+oldLength, selEnd+oldLength+1);
// output.getHighlighter().addHighlight(selStart+oldLength, selEnd+oldLength+1, new DefaultHighlighter.DefaultHighlightPainter(Color.white) );
} catch (Exception e) {System.out.println("highlighting problem!");}
}// s.length()>0
@@ -1850,4 +1902,59 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener,
send((String)commands.elementAt(list.getSelectedIndex()));
}
}
+
+ // pop-up menu (adapted from DynamicTree2):
+ class PopupListener extends MouseAdapter {
+ public void mousePressed(MouseEvent e) {
+// int selStart = tree.getRowForLocation(e.getX(), e.getY());
+// output.setSelectionRow(selStart);
+ if (debug3)
+ System.out.println("mouse pressed2: "+output.getSelectionStart()+" "+output.getSelectionEnd());
+ //maybeShowPopup(e);
+ }
+
+ public void mouseReleased(MouseEvent e) {
+ if (debug3) System.out.println("mouse released2!"+output.getSelectionStart()+" "+output.getSelectionEnd());
+ maybeShowPopup(e);
+ }
+ }
+ void maybeShowPopup(MouseEvent e) {
+ int i=outputVector.size()-1;
+ // right click:
+ if (e.isPopupTrigger()) {
+ m2 = e;
+ timer2.start();
+ }
+ // middle click
+ if (e.getButton() == MouseEvent.BUTTON2)
+ {
+ if (debug3) System.out.println("MIDDLE BUTTON!");
+ // selection Exists:
+ if (!selectedText.equals(""))
+ {
+ if (selectedText.length()<5)
+ field.setBounds(e.getX()+200, e.getY()+80, 140, 30);
+ else
+ field.setBounds(e.getX()+200, e.getY()+80, selectedText.length()*10, 30);
+ getLayeredPane().add(field, new Integer(1), 0);
+ field.setText(selectedText);
+ field.requestFocusInWindow();
+ }
+ }
+ }
+ void addMenuItem(String name){
+ menuItem2 = new JMenuItem(name);
+ menuItem2.setActionCommand("popupMenuItem");
+ menuItem2.addActionListener(this);
+ popup2.add(menuItem2);
+
+ }
+ public void focusGained(FocusEvent e)
+ {
+ }
+ public void focusLost(FocusEvent e)
+ {
+ getLayeredPane().remove(field);
+ repaint();
+ }
}