Revision: 6294
http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6294&view=rev
Author: wis775
Date: 2011-06-05 19:45:51 +0000 (Sun, 05 Jun 2011)
Log Message:
-----------
(Syntax Plugin) Add a configuration, that "Copy as RTF" is the default copy action for shortcuts like CTRL+C
Modified Paths:
--------------
trunk/sql12/doc/src/main/resources/changes.txt
trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferences.java
trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferencesPanel.java
trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/rsyntax/SquirrelRSyntaxTextArea.java
trunk/sql12/plugins/syntax/src/main/resources/net/sourceforge/squirrel_sql/plugins/syntax/I18NStrings.properties
trunk/sql12/plugins/syntax/src/test/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferencesTest.java
Modified: trunk/sql12/doc/src/main/resources/changes.txt
===================================================================
--- trunk/sql12/doc/src/main/resources/changes.txt 2011-06-05 17:39:52 UTC (rev 6293)
+++ trunk/sql12/doc/src/main/resources/changes.txt 2011-06-05 19:45:51 UTC (rev 6294)
@@ -12,7 +12,9 @@
Feature Request 1744964: Copy text from the SQL editor panel as rich text.
- This functionality is available via the pop-up menu and the tools pop-up. To use this, the RSyntax editor (Syntax Plugin) must be activated.
+ This functionality is available via the pop-up menu and the tools pop-up. Additional this mode can be activated for copy shortcuts.
+ See: Session Properties => Syntax => Copy shortcuts use the "Rich Text Format"
+ To use this, the RSyntax editor (Syntax Plugin) must be activated.
Source Tabs:
Syntax highlighting is used for displaying the source of database objects, if the syntax plugin is installed.
Modified: trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferences.java
===================================================================
--- trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferences.java 2011-06-05 17:39:52 UTC (rev 6293)
+++ trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferences.java 2011-06-05 19:45:51 UTC (rev 6294)
@@ -122,6 +122,10 @@
private boolean _lineNumbersEnabled = false;
+ /**
+ * Indicates, that copy in rich text format should be used as default copy action (if possible)
+ */
+ private boolean _useCopyAsRtf = false;
public SyntaxPreferences()
{
@@ -727,4 +731,18 @@
return _propChgReporter;
}
+
+ /**
+ * @return the useCopyAsRtf
+ */
+ public boolean isUseCopyAsRtf() {
+ return _useCopyAsRtf;
+ }
+
+ /**
+ * @param _useCopyAsRtf the useCopyAsRtf to set
+ */
+ public void setUseCopyAsRtf(boolean useCopyAsRtf) {
+ this._useCopyAsRtf = useCopyAsRtf;
+ }
}
Modified: trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferencesPanel.java
===================================================================
--- trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferencesPanel.java 2011-06-05 17:39:52 UTC (rev 6293)
+++ trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferencesPanel.java 2011-06-05 19:45:51 UTC (rev 6294)
@@ -191,6 +191,9 @@
// i18n[syntax.lineNumbersEnabled=Enable line numbers]
String LINE_NUMBERS_ENABLES = s_stringMgr.getString("syntax.lineNumbersEnabled");
+ // i18n[syntax.useCopyAsRtf=Copy in rich text format per default]
+ String USE_COPY_AS_RTF = s_stringMgr.getString("syntax.useCopyAsRtf");
+
}
private final JRadioButton _netbeansActiveOpt = new JRadioButton(i18n.NETBEANS);
@@ -202,6 +205,8 @@
private final JTextField _txtTextLimitLineWidth = new JTextField();
private final JCheckBox _chkHighlightCurrentLine = new JCheckBox(i18n.HIGHLIGHT_CURRENT_LINE);
private final JCheckBox _chkLineNumbersEnabled = new JCheckBox(i18n.LINE_NUMBERS_ENABLES);
+
+ private final JCheckBox _useCopyAsRtf = new JCheckBox(i18n.USE_COPY_AS_RTF);
private StylesListSelectionListener _listLis;
@@ -257,9 +262,12 @@
_txtTextLimitLineWidth.setText("" + prefs.getTextLimitLineWidth());
+ _useCopyAsRtf.setSelected(prefs.isUseCopyAsRtf());
+
_stylesList.loadData(prefs);
_styleMaintPnl.setStyle(_stylesList.getSelectedSyntaxStyle());
-
+
+
updateControlStatus();
}
@@ -289,7 +297,8 @@
prefs.setTextLimitLineVisible(_chkTextLimitLineVisible.isSelected());
prefs.setHighlightCurrentLine(_chkHighlightCurrentLine.isSelected());
prefs.setLineNumbersEnabled(_chkLineNumbersEnabled.isSelected());
-
+ prefs.setUseCopyAsRtf(_useCopyAsRtf.isSelected());
+
int limit = 80;
try
@@ -326,26 +335,27 @@
prefs.setDataTypeStyle(_stylesList.getSyntaxStyleAt(StylesList.IStylesListIndices.DATA_TYPES));
}
- private void updateControlStatus()
- {
- final boolean useOsterControl = _osterActiveOpt.isSelected();
- final boolean useNetbeansControl = _netbeansActiveOpt.isSelected();
- final boolean useRSyntaxControl = _rsyntaxActiveOpt.isSelected();
- final boolean usePlainControl = _plainActiveOpt.isSelected();
+ private void updateControlStatus()
+ {
+ final boolean useOsterControl = _osterActiveOpt.isSelected();
+ final boolean useNetbeansControl = _netbeansActiveOpt.isSelected();
+ final boolean useRSyntaxControl = _rsyntaxActiveOpt.isSelected();
+ final boolean usePlainControl = _plainActiveOpt.isSelected();
- _stylesList.setEnabled(useOsterControl || useNetbeansControl || useRSyntaxControl);
- _styleMaintPnl.setEnabled(useOsterControl || useNetbeansControl || useRSyntaxControl);
+ _stylesList.setEnabled(useOsterControl || useNetbeansControl || useRSyntaxControl);
+ _styleMaintPnl.setEnabled(useOsterControl || useNetbeansControl || useRSyntaxControl);
- _chkTextLimitLineVisible.setEnabled(useNetbeansControl || useRSyntaxControl);
- _txtTextLimitLineWidth.setEnabled(useNetbeansControl || useRSyntaxControl);
+ _chkTextLimitLineVisible.setEnabled(useNetbeansControl || useRSyntaxControl);
+ _txtTextLimitLineWidth.setEnabled(useNetbeansControl || useRSyntaxControl);
- if(useNetbeansControl || useRSyntaxControl)
- {
- _txtTextLimitLineWidth.setEnabled(_chkTextLimitLineVisible.isSelected());
- }
+ if(useNetbeansControl || useRSyntaxControl)
+ {
+ _txtTextLimitLineWidth.setEnabled(_chkTextLimitLineVisible.isSelected());
+ }
- _chkHighlightCurrentLine.setEnabled(useRSyntaxControl);
- _chkLineNumbersEnabled.setEnabled(useRSyntaxControl);
+ _chkHighlightCurrentLine.setEnabled(useRSyntaxControl);
+ _chkLineNumbersEnabled.setEnabled(useRSyntaxControl);
+ _useCopyAsRtf.setEnabled(useRSyntaxControl);
}
private void createUserInterface(SyntaxPreferences prefs,
@@ -474,6 +484,9 @@
gbc = new GridBagConstraints(0,6,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5), 0,0);
pnlRet.add(_chkLineNumbersEnabled, gbc);
+ gbc = new GridBagConstraints(0,7,1,1,0,0,GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5,5,5,5), 0,0);
+ pnlRet.add(_useCopyAsRtf, gbc);
+
return pnlRet;
}
Modified: trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/rsyntax/SquirrelRSyntaxTextArea.java
===================================================================
--- trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/rsyntax/SquirrelRSyntaxTextArea.java 2011-06-05 17:39:52 UTC (rev 6293)
+++ trunk/sql12/plugins/syntax/src/main/java/net/sourceforge/squirrel_sql/plugins/syntax/rsyntax/SquirrelRSyntaxTextArea.java 2011-06-05 19:45:51 UTC (rev 6294)
@@ -1,32 +1,36 @@
package net.sourceforge.squirrel_sql.plugins.syntax.rsyntax;
+import java.awt.event.ActionEvent;
+import java.awt.event.MouseEvent;
+
+import javax.swing.InputMap;
+import javax.swing.JPopupMenu;
+import javax.swing.KeyStroke;
+import javax.swing.event.ChangeListener;
+import javax.swing.event.UndoableEditListener;
+import javax.swing.text.DefaultCaret;
+import javax.swing.text.DefaultEditorKit;
+import javax.swing.text.Document;
+
import net.sourceforge.squirrel_sql.client.session.ISession;
import net.sourceforge.squirrel_sql.client.session.SQLTokenListener;
+import net.sourceforge.squirrel_sql.client.session.mainpanel.IUndoHandler;
+import net.sourceforge.squirrel_sql.client.session.parser.IParserEventsProcessor;
import net.sourceforge.squirrel_sql.client.session.parser.ParserEventsAdapter;
-import net.sourceforge.squirrel_sql.client.session.parser.IParserEventsProcessor;
import net.sourceforge.squirrel_sql.client.session.parser.kernel.ErrorInfo;
-import net.sourceforge.squirrel_sql.client.session.mainpanel.IUndoHandler;
import net.sourceforge.squirrel_sql.fw.id.IIdentifier;
import net.sourceforge.squirrel_sql.fw.util.StringManager;
import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory;
import net.sourceforge.squirrel_sql.plugins.syntax.KeyManager;
import net.sourceforge.squirrel_sql.plugins.syntax.SyntaxPreferences;
import net.sourceforge.squirrel_sql.plugins.syntax.rsyntax.search.SquirrelRSyntaxSearchEngine;
+
import org.fife.ui.rsyntaxtextarea.RSyntaxDocument;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaEditorKit;
import org.fife.ui.rsyntaxtextarea.SyntaxScheme;
import org.fife.ui.rtextarea.RTextAreaUI;
-import javax.swing.*;
-import javax.swing.event.UndoableEditListener;
-import javax.swing.event.ChangeListener;
-import javax.swing.text.Document;
-import javax.swing.text.DefaultCaret;
-import java.awt.*;
-import java.awt.event.MouseEvent;
-import java.awt.event.ActionEvent;
-
public class SquirrelRSyntaxTextArea extends RSyntaxTextArea
{
private static final StringManager s_stringMgr =
@@ -56,7 +60,12 @@
_rSyntaxHighlightTokenMatcherProxy.setDelegate(_propertiesWrapper.getSyntaxHighlightTokenMatcher(session, this, sqlEntryPanelIdentifier));
+
+ modifiyKeystrokesFromPreferences(prefs);
+
+
updateFromPreferences();
+
new KeyManager(this);
@@ -78,7 +87,27 @@
}
- protected RTextAreaUI createRTextAreaUI()
+ /**
+ * Modifies the current {@link InputMap} of this component according to the actual preferences.
+ * Within the preferences of the syntax plugin, the user can change the behavior of some key strokes. e.g. the copy action.
+ * Because we have no access to the syntax preferences at the moment, the UI is created, we have to modify them after the creation.
+ * @param prefs Preferences to use.
+ */
+ private void modifiyKeystrokesFromPreferences(SyntaxPreferences prefs) {
+ InputMap shared = getInputMap();
+ if(prefs.isUseCopyAsRtf()){
+ // Replace the default copy behavior for all key bindings
+ KeyStroke[] allKeys = shared.allKeys();
+ for (KeyStroke keyStroke : allKeys) {
+ Object object = shared.get(keyStroke);
+ if(DefaultEditorKit.copyAction.equals(object)){
+ shared.put(keyStroke, RSyntaxTextAreaEditorKit.rstaCopyAsRtfAction);
+ }
+ }
+ }
+ }
+
+protected RTextAreaUI createRTextAreaUI()
{
// Will be called from the super class constructor
SquirreLRSyntaxTextAreaUI ret = new SquirreLRSyntaxTextAreaUI(this);
Modified: trunk/sql12/plugins/syntax/src/main/resources/net/sourceforge/squirrel_sql/plugins/syntax/I18NStrings.properties
===================================================================
--- trunk/sql12/plugins/syntax/src/main/resources/net/sourceforge/squirrel_sql/plugins/syntax/I18NStrings.properties 2011-06-05 17:39:52 UTC (rev 6293)
+++ trunk/sql12/plugins/syntax/src/main/resources/net/sourceforge/squirrel_sql/plugins/syntax/I18NStrings.properties 2011-06-05 19:45:51 UTC (rev 6294)
@@ -39,8 +39,8 @@
syntax.textLimitLineWidth=Text limit line width
syntax.highlightCurrentLine=Highlight current line
syntax.lineNumbersEnabled=Enable line numbers
+syntax.useCopyAsRtf=Copy shortcuts use the "Rich Text Format"
-
syntax.abrevclose=Close
syntax.abrevNewLineNote=Use \\n in corrections for line break. Note: Bookmarks are more powerful than abreviations.
Modified: trunk/sql12/plugins/syntax/src/test/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferencesTest.java
===================================================================
--- trunk/sql12/plugins/syntax/src/test/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferencesTest.java 2011-06-05 17:39:52 UTC (rev 6293)
+++ trunk/sql12/plugins/syntax/src/test/java/net/sourceforge/squirrel_sql/plugins/syntax/SyntaxPreferencesTest.java 2011-06-05 19:45:51 UTC (rev 6294)
@@ -22,6 +22,7 @@
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import net.sourceforge.squirrel_sql.AbstractSerializableTest;
@@ -166,4 +167,11 @@
classUnderTest.setWhiteSpaceStyle(testStyle);
assertEquals(testStyle, classUnderTest.getWhiteSpaceStyle());
}
+
+ @Test
+ public void testIsUseCopyAsRtf() throws Exception
+ {
+ classUnderTest.setUseCopyAsRtf(true);
+ assertTrue(classUnderTest.isUseCopyAsRtf());
+ }
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|