1 /*
2 * GeoVISTA Center (Penn State, Dept. of Geography)
3 * Copyright (c), 1999 - 2002, GeoVISTA Center
4 * All Rights Researved.
5 *
6 * Description:
7 * The bar for editing a cell's edu.psu.geovista.app.spreadsheet.formula
8 * Date: Mar 25, 2003
9 * Time: 10:39:53 AM
10 * @author Jin Chen
11 */
12
13 package edu.psu.geovista.app.spreadsheet.formula;
14
15 import edu.psu.geovista.app.spreadsheet.table.SSTable;
16
17 import javax.swing.*;
18 import javax.swing.table.TableCellEditor;
19 import javax.swing.table.DefaultTableCellRenderer;
20 import javax.swing.event.ListSelectionListener;
21 import java.awt.*;
22 import java.awt.event.FocusListener;
23 import java.awt.event.FocusEvent;
24 import java.awt.event.KeyListener;
25 import java.awt.event.KeyEvent;
26
27
28
29 public class FormulaEditor extends JPanel{
30 JTextField cellF; //cell field show address of the cell
31 JTextField formulaF;//edu.psu.geovista.app.spreadsheet.formula address for editing
32 SSTable tb;
33 public FormulaEditor(SSTable _tb) {
34 this.tb = _tb;
35 cellF=new JTextField(" ");
36 cellF.setHorizontalAlignment(JTextField.CENTER );
37 cellF.setForeground(Color.BLUE);
38 cellF.setEditable(false);
39
40 formulaF=new JTextField();
41 formulaF.addKeyListener(new KeyListener(){
42 public void keyTyped(KeyEvent e){
43 char c=e.getKeyChar();
44 if (c=='\n'){
45 tb.editingStopped(null);
46 int column=tb.getSelectedColumn() ;
47 int row=tb.getSelectedRow()+1 ;
48 DefaultTableCellRenderer cellRender=
49 (DefaultTableCellRenderer)tb.getCellRenderer(row,column);
50 tb.requestFocus() ;
51 //move to next cell
52 tb.setRowSelectionInterval(row,row);
53 tb.setColumnSelectionInterval(column,column);
54
55 //cellRender.requestFocus() ;
56 /*CellFomulaEditor editor=(CellFomulaEditor)tb.getCellEditor(row,column) ;
57 Component cp=editor.getComponent() ;
58 cp.requestFocus() ; */
59 //tb.requestFocus();
60 }
61
62 }
63 public void keyPressed(KeyEvent e){}
64 public void keyReleased(KeyEvent e){
65 //synchronize the value in edu.psu.geovista.app.spreadsheet.formula editor and cell editor
66 String input=formulaF.getText();
67 int column=tb.getSelectedColumn() ;
68 int row=tb.getSelectedRow() ;
69 CellFomulaEditor editor=(CellFomulaEditor)tb.getCellEditor(row,column) ;
70 JTextField cellF=editor.getCellField() ;
71 cellF.setText(input);
72 }
73 });
74 formulaF.addFocusListener(new FocusListener(){
75 //If input on FormulaField on bar, the corresponding cell is in edit state
76 public void focusGained(FocusEvent e) {
77 int column=tb.getSelectedColumn() ;
78 int row=tb.getSelectedRow() ;
79 tb.editCellAt(row,column);//
80 }
81 public void focusLost(FocusEvent e){}
82 });
83 this.setLayout(new BorderLayout());
84 this.add(cellF,BorderLayout.WEST );
85 this.add(formulaF,BorderLayout.CENTER );
86 }
87
88 public JTextField getCellField() {
89 return cellF;
90 }
91
92 public JTextField getFormulaField() {
93 return formulaF;
94 }
95 }
This page was automatically generated by Maven