From: Jakub H. <mal...@us...> - 2006-10-22 16:55:22
|
Update of /cvsroot/jedit/plugins/TextAutocomplete/net/jakubholy/jedit/autocomplete In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv29558/net/jakubholy/jedit/autocomplete Modified Files: TextAutocompletePane.java Log Message: + isSelectionByNumberEnabled, selectionByNumberModifierMask Index: TextAutocompletePane.java =================================================================== RCS file: /cvsroot/jedit/plugins/TextAutocomplete/net/jakubholy/jedit/autocomplete/TextAutocompletePane.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- TextAutocompletePane.java 5 Apr 2006 19:31:01 -0000 1.4 +++ TextAutocompletePane.java 22 Oct 2006 16:55:18 -0000 1.5 @@ -1,8 +1,8 @@ -/* +/* * TextAutocompletePlugin.java * $id$ * author Jakub (Kuba) Holy, 2005 - * + * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 @@ -20,12 +20,17 @@ package net.jakubholy.jedit.autocomplete; import java.awt.GridBagConstraints; +import java.awt.event.InputEvent; +import javax.swing.DefaultComboBoxModel; import javax.swing.JButton; import javax.swing.JCheckBox; +import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JTextArea; import javax.swing.JTextField; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import org.gjt.sp.jedit.AbstractOptionPane; import org.gjt.sp.jedit.GUIUtilities; @@ -36,7 +41,7 @@ * @author Jakub Holý * */ -public class TextAutocompletePane extends AbstractOptionPane +public class TextAutocompletePane extends AbstractOptionPane { /* * # Is a character a part of a word or is it a word separator? @@ -54,49 +59,51 @@ # Shall the word be rememberd i.e. added to the completion word list? # options.isWordToRemember.code */ - private JTextField isWordCode; - private JTextField minPrefixLength; - private JTextField acceptKeys; - private JTextField disposeKeys; - private JTextField selectionUpKeys; - private JTextField selectionDownKeys; - private JTextField isWordToRememberCode; - private JTextField minWordToRememberLength; - private JTextField maxCountOfWords; - private JCheckBox isStartForBuffers; - private JButton resetButton; - + private JTextField isWordCode; + private JTextField minPrefixLength; + private JTextField acceptKeys; + private JTextField disposeKeys; + private JTextField selectionUpKeys; + private JTextField selectionDownKeys; + private JTextField isWordToRememberCode; + private JTextField minWordToRememberLength; + private JTextField maxCountOfWords; + private JCheckBox isStartForBuffers; + private JCheckBox isSelectionByNumberEnabled; + private JComboBox selectionByNumberModifierMask; + private JButton resetButton; + public TextAutocompletePane() { super("TextAutocomplete"); } - + /* Build the GUI */ protected void _init() { - + addComponent(new JLabel("<html><h2>TextAutocomplete Global Options</h2></html>")); - + isStartForBuffers = new JCheckBox(); isStartForBuffers.setToolTipText("Start the autocompletion automatically for every new buffer [false]"); addComponent("Start autom. for new buffers", isStartForBuffers); - + addSeparator(TextAutocompletePlugin.PROPS_PREFIX + "options.words-and-completions.label"); // ------------------------------------------------- - + maxCountOfWords = new JTextField(); maxCountOfWords.setToolTipText("Remember at maximum this number of completions (words) per buffer [1000]"); addComponent("Remember at max. words ", maxCountOfWords); - + minPrefixLength = new JTextField(); minPrefixLength.setToolTipText("Only offer completions when this number of characters have been typed. [2]"); addComponent("Minimal prefix length ", minPrefixLength); - + minWordToRememberLength = new JTextField(); minWordToRememberLength.setToolTipText("Don't remeber words of shorter length. [5]"); addComponent("Remember words long at least", minWordToRememberLength); - + isWordToRememberCode = new JTextField(); isWordToRememberCode.setToolTipText("Should I remember the typed word? Use the variable 'word' (String). [true]"); addComponent("Is word to remember? [code] ", isWordToRememberCode); - + isWordCode = new JTextField(); isWordCode.setToolTipText("<html>Does the insertion mark the end of the word being typed? " + "<br>Use the variables 'insertion' (char) and 'prefix' (String). [only letters]</html>"); @@ -104,15 +111,15 @@ panel.add( new JLabel("Is word element? [beanshell code]") ); panel.add( isWordElementCode );*/ addComponent("Belongs to word? [code] ", isWordCode); - + addSeparator(TextAutocompletePlugin.PROPS_PREFIX + "options.control-keys.label"); // ------------------------------------------------- - + //JEditorPane pane = new JEditorPane(); JTextArea pane = new JTextArea(); pane.setLineWrap(true); pane.setWrapStyleWord(true); // pane.setFont(new java.awt.Font("Dialog", 0, 10)); - pane.setFont( this.getFont() ); + pane.setFont( this.getFont() ); //pane.setEditorKit( pane.getEditorKitForContentType("text/html") ); // switch to html pane.setEditable(false); pane.setBackground(this.getBackground()); @@ -125,34 +132,52 @@ "Only special, non-displayable keys such as arrows, Esc and Enter work.\n" + "Example: VK_SPACE VK_ENTER"); addComponent(pane, GridBagConstraints.BOTH); - + acceptKeys = new JTextField(); acceptKeys.setToolTipText("Key to insert selected completion. (Only non-displayable keys such as Enter.) [VK_ENTER VK_TAB]"); addComponent("Accept with key ", acceptKeys); - + disposeKeys = new JTextField(); disposeKeys.setToolTipText("Key to hide the completions popup. (Only non-displayable keys such as Escape.) [VK_ESCAPE]"); addComponent("Dispose with key ", disposeKeys); - + selectionUpKeys = new JTextField(); selectionUpKeys.setToolTipText("Key to select the completion above. (Only non-displayable keys such as Up arrow.) [VK_UP]"); addComponent("Up in completions key ", selectionUpKeys); - + selectionDownKeys = new JTextField(); selectionDownKeys.setToolTipText("Key to select the completion below. (Only non-displayable keys such as Down arrow.) [VK_DOWN]"); addComponent("Down in completions key ", selectionDownKeys); - + + isSelectionByNumberEnabled = new JCheckBox(); + isSelectionByNumberEnabled.addChangeListener(new ChangeListener(){ + public void stateChanged(ChangeEvent e) + { + selectionByNumberModifierMask.setEnabled( + isSelectionByNumberEnabled.isSelected()); + } + + }); + isSelectionByNumberEnabled.setToolTipText("Is it possible to select an offered completion by typing its number? [yes]"); + addComponent("Select compl. by number ", isSelectionByNumberEnabled); + + selectionByNumberModifierMask = new JComboBox(); + selectionByNumberModifierMask.setModel(new DefaultComboBoxModel( + new String[] { "None", "Alt (left)", "AltGr (right)", "Ctrl" })); + selectionByNumberModifierMask.setToolTipText("Additional key that must be pressed together with the number N to select the Nth completion. Some may not work! [none]"); + addComponent("Select by number modifier ", selectionByNumberModifierMask); + addSeparator(); // ------------------------------------------------- - + resetButton = new javax.swing.JButton(); resetButton.setText("Reset options"); - resetButton.addActionListener( new java.awt.event.ActionListener() + resetButton.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { resetToDefault(); } }); addComponent(resetButton); - + // Display the values redisplayValues(); } @@ -160,48 +185,70 @@ /* Save & aspply the changes to the properties. */ protected void _save() { String propertyValue = null; - + setJEditProperty("isStartForBuffers", isStartForBuffers.isSelected()); - + propertyValue = maxCountOfWords.getText(); if( isInteger("maxCountOfWords", propertyValue) ) { setJEditProperty("maxCountOfWords", propertyValue); } - + propertyValue = isWordCode.getText(); if(isValueSet(propertyValue)) { propertyValue = PreferencesManager.sanitizeCode(propertyValue); } setJEditProperty("isWord-code", propertyValue); - + propertyValue = minPrefixLength.getText(); if( isInteger("minPrefixLength", propertyValue) ) { setJEditProperty("minPrefixLength", propertyValue); } - + propertyValue = acceptKeys.getText(); setJEditProperty("acceptKey", propertyValue); - + propertyValue = disposeKeys.getText(); setJEditProperty("disposeKey", propertyValue); - + propertyValue = selectionUpKeys.getText(); setJEditProperty("selectionUpKey", propertyValue); - + propertyValue = selectionDownKeys.getText(); setJEditProperty("selectionDownKey", propertyValue); - + propertyValue = isWordToRememberCode.getText(); if(isValueSet(propertyValue)) { propertyValue = PreferencesManager.sanitizeCode(propertyValue); } setJEditProperty("isWordToRemember-code", propertyValue); - + propertyValue = minWordToRememberLength.getText(); if(isInteger("minWordToRememberLength", propertyValue)) { setJEditProperty("minWordToRememberLength", propertyValue); } - + // Notify the PreferencesManager that options have changed PreferencesManager.getPreferencesManager().optionsChanged(); + + setJEditProperty("isSelectionByNumberEnabled", isSelectionByNumberEnabled.isSelected()); + + // selectionByNumberModifierMask + propertyValue = minPrefixLength.getText(); + int modifier = 0; + int selectedInd = selectionByNumberModifierMask.getSelectedIndex(); // selectionByNumberModifierMask + switch (selectedInd) { + case 0: + modifier = 0; + break; + case 1: + modifier = InputEvent.ALT_MASK; + break; + case 2: + modifier = InputEvent.ALT_GRAPH_MASK; + break; + case 3: + modifier = InputEvent.CTRL_MASK; + break; + } + setJEditProperty("selectionByNumberModifierMask", String.valueOf(modifier)); } - - /** + + /** * Return true if the propertyValue is convertable to an integer. * @param propertyName Property name to display in an error dialog * @param propertyValue the value that should be an integer @@ -212,48 +259,71 @@ try { Integer.parseInt(propertyValue.trim()); } catch(NumberFormatException nf) - { - GUIUtilities.error(null, TextAutocompletePlugin.PROPS_PREFIX + "errorMessage", + { + GUIUtilities.error(null, TextAutocompletePlugin.PROPS_PREFIX + "errorMessage", new Object[]{ propertyName + " must be an integer but is '"+propertyValue+"'" }); return false; } } return true; } - + private void redisplayValues() { - isStartForBuffers.setSelected( + isStartForBuffers.setSelected( PreferencesManager.getPreferencesManager().isStartForBuffers() ); - - maxCountOfWords.setText( + + maxCountOfWords.setText( getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "maxCountOfWords") ); - - isWordCode.setText( + + isWordCode.setText( getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "isWord-code") ); - minPrefixLength.setText( - getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "minPrefixLength") + minPrefixLength.setText( + getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "minPrefixLength") ); - acceptKeys.setText( - getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "acceptKey") + acceptKeys.setText( + getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "acceptKey") ); - disposeKeys.setText( - getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "disposeKey") + disposeKeys.setText( + getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "disposeKey") ); - selectionUpKeys.setText( - getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "selectionUpKey") + selectionUpKeys.setText( + getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "selectionUpKey") ); - selectionDownKeys.setText( - getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "selectionDownKey") + selectionDownKeys.setText( + getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "selectionDownKey") ); - isWordToRememberCode.setText( - getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "isWordToRemember-code") + isWordToRememberCode.setText( + getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "isWordToRemember-code") ); - minWordToRememberLength.setText( - getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "minWordToRememberLength") + minWordToRememberLength.setText( + getJEditProperty(TextAutocompletePlugin.PROPS_PREFIX + "minWordToRememberLength") ); + + isSelectionByNumberEnabled.setSelected( + PreferencesManager.getPreferencesManager().isSelectionByNumberEnabled()); +// if (! isSelectionByNumberEnabled.isSelected()) +// { selectionByNumberModifierMask.setEnabled(false); } + + // selectionByNumberModifierMask + int selectedInd; + int mask = PreferencesManager.getPreferencesManager().getSelectionByNumberModifier(); + switch (mask) { + case InputEvent.ALT_MASK: + selectedInd = 1; + break; + case InputEvent.ALT_GRAPH_MASK: + selectedInd = 2; + break; + case InputEvent.CTRL_MASK: + selectedInd = 3; + break; + default: + selectedInd = 0; + } + selectionByNumberModifierMask.setSelectedIndex(selectedInd); } - + /** Reset all options to the default values. */ public void resetToDefault() { @@ -267,32 +337,34 @@ "selectionUpKey", "selectionDownKey", "isWordToRemember-code", - "minWordToRememberLength" + "minWordToRememberLength", + "isSelectionByNumberEnabled", + "selectionByNumberModifierMask" }; - + for (int i = 0; i < properties.length; i++) { jEdit.unsetProperty(TextAutocompletePlugin.PROPS_PREFIX + properties[i]); } - + // Display the new properties redisplayValues(); } - + ///////////////////////////////////////////////////////////////////////////////////////////////// - + /** What to display as a value for a property that is not set. */ - private static String UNSET_PROP = "<default - see documentation>"; - + private static String UNSET_PROP = "<default - see documentation>"; + /** Return jEdit property or, if it isn't set, a default string. */ private String getJEditProperty(String property) { return jEdit.getProperty(property, UNSET_PROP); } - - ////////////////////////////////////////////////////////////////////////////////////// - - /** + + ////////////////////////////////////////////////////////////////////////////////////// + + /** * Set jEdit property if the value has been set. * @param property The property name without the common prefix - * @value The value to set + * @value The value to set */ private boolean setJEditProperty(String property, String value) { @@ -304,32 +376,32 @@ else { return false; } } - + /** Set jEdit property if the value has been set. * @param property The property name without the common prefix - * @value The value to set + * @value The value to set */ - private boolean setJEditProperty(String property, boolean value) + private boolean setJEditProperty(String property, boolean value) { jEdit.setBooleanProperty(TextAutocompletePlugin.PROPS_PREFIX + property, value); return value; } - + ////////////////////////////////////////////////////////////////////////////////////// - + /** True if the display value != the "property unset" value. */ final private boolean isValueSet(String value) { return (value != null) && (! value.equals(UNSET_PROP)); } - + /* public static void main(String[] args) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { - + TextAutocompletePane pane = new TextAutocompletePane(); pane._init(); pane.setSize(600, 600); - + javax.swing.JFrame frame = new javax.swing.JFrame("PAutocomplPaneTest"); javax.swing.JFrame.setDefaultLookAndFeelDecorated(true); frame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE); @@ -338,7 +410,7 @@ frame.getContentPane().add( pane ); frame.add( pane ); frame.pack(); - frame.setVisible(true); + frame.setVisible(true); } }); System.out.println("Done!"); |