Changeset 29037
- Timestamp:
- 2014-05-05T17:52:52+12:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/gli/src/org/greenstone/gatherer/cdm/Format4gs3Manager.java
r28995 r29037 42 42 import org.greenstone.gatherer.gui.GLIButton; 43 43 import org.greenstone.gatherer.gui.FormatPane; 44 import org.greenstone.gatherer.gui.NumberedJTextArea; 44 45 import org.greenstone.gatherer.metadata.MetadataElement; 45 46 import org.greenstone.gatherer.metadata.MetadataSetManager; … … 403 404 private JButton remove_button; 404 405 private JButton default_button; 405 private JButton undo_button;406 private JButton redo_button;407 406 private JComboBox feature_combobox; 408 407 private JList format_list; … … 412 411 private JPanel selection_pane; 413 412 private final Dimension FIELD_SIZE = new Dimension(200, 30); 414 private final UndoManager undo = new UndoManager();415 413 private boolean newtext = true; 416 414 private Format4gs3 previousFormat = null; … … 440 438 JPanel editor_pane = new JPanel(); 441 439 442 editor_textarea = new NumberedJTextArea(); 443 444 /* Fields specific to RSyntaxQuery inherited class */ 445 editor_textarea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_XML); 446 editor_textarea.setBracketMatchingEnabled(true); 447 editor_textarea.setAnimateBracketMatching(true); 448 editor_textarea.setAntiAliasingEnabled(true); 449 editor_textarea.setAutoIndentEnabled(true); 450 editor_textarea.setPaintMarkOccurrencesBorder(false); 451 452 /* Standard fields to JTextArea */ 453 editor_textarea.setOpaque(false); 454 editor_textarea.setBackground(Configuration.getColor("coloring.editable_background", false)); 455 editor_textarea.setCaretPosition(0); 456 editor_textarea.setLineWrap(true); 457 editor_textarea.setRows(11); 458 editor_textarea.setWrapStyleWord(false); 459 editor_textarea.setToolTipText(Dictionary.get("CDM.FormatManager.Add_Tooltip")); 440 // NumberedJTextArea comes with undo and redo buttons already hooked up to listeners 441 editor_textarea = new NumberedJTextArea(Dictionary.get("CDM.FormatManager.Add_Tooltip")); 460 442 461 443 default_button = new GLIButton(Dictionary.get("CDM.FormatManager.Default"), Dictionary.get("CDM.FormatManager.Default_Tooltip")); … … 467 449 remove_button.setEnabled(false); 468 450 469 undo_button = new GLIButton(Dictionary.get("General.Undo"), Dictionary.get("General.Undo_Tooltip"));470 undo_button.setEnabled(false);471 472 redo_button = new GLIButton(Dictionary.get("General.Redo"), Dictionary.get("General.Redo_Tooltip"));473 redo_button.setEnabled(false);474 475 451 // Connect 476 452 add_button.addActionListener(new AddListener()); 477 453 remove_button.addActionListener(new RemoveListener()); 478 454 default_button.addActionListener(new DefaultListener()); 479 undo_button.addActionListener(new UndoListener());480 redo_button.addActionListener(new RedoListener());481 455 feature_combobox.addActionListener(new FeatureListener()); 482 456 editor_textarea.getDocument().addDocumentListener(new EditorListener()); 483 // Listen for undo and redo events484 editor_textarea.getDocument().addUndoableEditListener(new UndoableEditListener()485 {486 public void undoableEditHappened(UndoableEditEvent evt)487 {488 undo.addEdit(evt.getEdit());489 }490 });491 457 492 458 format_list.addListSelectionListener(new FormatListListener()); … … 505 471 JPanel rupanel = new JPanel(); 506 472 rupanel.setLayout(new GridLayout(1, 2)); 507 rupanel.add( undo_button);508 rupanel.add( redo_button);473 rupanel.add(editor_textarea.undoButton); 474 rupanel.add(editor_textarea.redoButton); 509 475 510 476 editor_pane.setLayout(new BorderLayout()); … … 651 617 if (!newtext) 652 618 { 653 undo_button.setEnabled(true);619 editor_textarea.undoButton.setEnabled(true); 654 620 } 655 621 … … 694 660 public void actionPerformed(ActionEvent event) 695 661 { 696 undo_button.setEnabled(false);697 redo_button.setEnabled(false);662 editor_textarea.undoButton.setEnabled(false); 663 editor_textarea.redoButton.setEnabled(false); 698 664 default_button.setEnabled(true); 699 665 newtext = true; … … 701 667 if (ignore_event == true) 702 668 { 703 undo.discardAllEdits();669 editor_textarea.discardAllEdits(); 704 670 return; 705 671 } … … 768 734 } 769 735 ignore_event = false; 770 undo.discardAllEdits();736 editor_textarea.discardAllEdits(); 771 737 } 772 738 } … … 776 742 public void valueChanged(ListSelectionEvent event) 777 743 { 778 undo_button.setEnabled(false);779 redo_button.setEnabled(false);744 editor_textarea.undoButton.setEnabled(false); 745 editor_textarea.redoButton.setEnabled(false); 780 746 default_button.setEnabled(true); 781 747 newtext = true; … … 829 795 830 796 } 831 undo.discardAllEdits();797 editor_textarea.discardAllEdits(); 832 798 } 833 799 … … 888 854 } 889 855 890 private class UndoListener implements ActionListener891 {892 893 public void actionPerformed(ActionEvent event)894 {895 try896 {897 if (undo.canUndo())898 {899 int pos = editor_textarea.getCaretPosition();900 redo_button.setEnabled(true);901 undo.undo();902 if (pos > 0)903 editor_textarea.setCaretPosition(pos - 1);904 else905 editor_textarea.setCaretPosition(pos);906 }907 if (!undo.canUndo())908 {909 undo_button.setEnabled(false);910 }911 else912 {913 undo_button.setEnabled(true);914 }915 916 }917 catch (Exception e)918 {919 920 }921 }922 }923 924 private class RedoListener implements ActionListener925 {926 public void actionPerformed(ActionEvent evt)927 {928 try929 {930 if (undo.canRedo())931 {932 int pos = editor_textarea.getCaretPosition();933 undo.redo();934 editor_textarea.setCaretPosition(pos);935 }936 if (!undo.canRedo())937 {938 redo_button.setEnabled(false);939 }940 else941 {942 redo_button.setEnabled(true);943 }944 945 }946 catch (Exception e)947 {948 }949 }950 }951 952 856 private void newFormat() 953 857 { … … 956 860 editor_textarea.setToolTipText(Dictionary.get("CDM.FormatManager.Editor_Disabled_Tooltip")); 957 861 958 undo_button.setEnabled(false);959 redo_button.setEnabled(false);862 editor_textarea.undoButton.setEnabled(false); 863 editor_textarea.redoButton.setEnabled(false); 960 864 add_button.setEnabled(true); 961 865 remove_button.setEnabled(false); … … 974 878 FormatPane.setPreviewButton(true); 975 879 } 976 977 /**978 * A textarea with the line number next to each line of the text979 */980 public class NumberedJTextArea extends RSyntaxTextArea /* JTextArea */981 {982 public void paintComponent(Graphics g)983 {984 Insets insets = getInsets();985 Rectangle rectangle = g.getClipBounds();986 g.setColor(Color.white);987 g.fillRect(rectangle.x, rectangle.y, rectangle.width, rectangle.height);988 989 super.paintComponent(g);990 991 if (rectangle.x < insets.left)992 {993 FontMetrics font_metrics = g.getFontMetrics();994 int font_height = font_metrics.getHeight();995 int y = font_metrics.getAscent() + insets.top;996 int line_number_start_point = ((rectangle.y + insets.top) / font_height) + 1;997 if (y < rectangle.y)998 {999 y = line_number_start_point * font_height - (font_height - font_metrics.getAscent());1000 }1001 int y_axis_end_point = y + rectangle.height + font_height;1002 int x_axis_start_point = insets.left;1003 x_axis_start_point -= getFontMetrics(getFont()).stringWidth(Math.max(getRows(), getLineCount() + 1) + " ");1004 if (!this.getText().trim().equals(""))1005 {1006 g.setColor(Color.DARK_GRAY);1007 }1008 else1009 {1010 g.setColor(Color.white);1011 }1012 int length = ("" + Math.max(getRows(), getLineCount() + 1)).length();1013 while (y < y_axis_end_point)1014 {1015 g.drawString(line_number_start_point + " ", x_axis_start_point, y);1016 y += font_height;1017 line_number_start_point++;1018 }1019 }1020 }1021 1022 public Insets getInsets()1023 {1024 Insets insets = super.getInsets(new Insets(0, 0, 0, 0));1025 insets.left += getFontMetrics(getFont()).stringWidth(Math.max(getRows(), getLineCount() + 1) + " ");1026 return insets;1027 }1028 }1029 880 } 1030 881
Note:
See TracChangeset
for help on using the changeset viewer.