[simplyhtml] 01/03: Imported Upstream version 0.16.18

Felix Natter fnatter-guest at moszumanska.debian.org
Sun Jul 31 16:35:01 UTC 2016


This is an automated email from the git hooks/post-receive script.

fnatter-guest pushed a commit to branch master
in repository simplyhtml.

commit 3ccfb2a5d0ffb893953b615a58a06c9113daf340
Author: Felix Natter <fnatter at gmx.net>
Date:   Sun Jul 31 18:27:48 2016 +0200

    Imported Upstream version 0.16.18
---
 build.gradle                                       |   2 +-
 src/com/lightdev/app/shtm/DynamicResource.java     |   2 +
 src/com/lightdev/app/shtm/FrmMain.java             |   2 +-
 src/com/lightdev/app/shtm/SHTMLAction.java         |   7 -
 src/com/lightdev/app/shtm/SHTMLDocument.java       |  21 +-
 .../lightdev/app/shtm/SHTMLEditorKitActions.java   | 579 ++++++++-------------
 src/com/lightdev/app/shtm/SHTMLEditorPane.java     |  17 +-
 src/com/lightdev/app/shtm/SHTMLPanelImpl.java      |  29 +-
 .../app/shtm/resources/SimplyHTML.properties       |   9 +
 .../shtm/resources/SimplyHTML_common.properties    |  33 +-
 .../app/shtm/resources/SimplyHTML_de.properties    |   8 +
 11 files changed, 334 insertions(+), 375 deletions(-)

diff --git a/build.gradle b/build.gradle
index b1dbc8d..4f6d945 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ apply plugin: 'eclipse'
 apply plugin: 'maven-publish'
 
 group 'com.lightdev.app.shtm.simplyhtml'
-version = '0.16.17'
+version = '0.16.18'
 
 targetCompatibility='1.7'
 sourceCompatibility='1.7'
diff --git a/src/com/lightdev/app/shtm/DynamicResource.java b/src/com/lightdev/app/shtm/DynamicResource.java
index e5de65b..c968222 100644
--- a/src/com/lightdev/app/shtm/DynamicResource.java
+++ b/src/com/lightdev/app/shtm/DynamicResource.java
@@ -103,6 +103,8 @@ class DynamicResource {
     public static final String labelSuffix = "Label";
     /** name constant for action commands in the resource file */
     private static final String actionSuffix = "Action";
+    /** name constant for accelerators in the resource file */
+    public static final String acceleratorSuffix = "Accelerator";
     /** name constant for indicating image resources in the resource file */
     public static final String imageSuffix = "Image";
     /** name constant for tool tip strings in the resource file */
diff --git a/src/com/lightdev/app/shtm/FrmMain.java b/src/com/lightdev/app/shtm/FrmMain.java
index 350acc3..04031c2 100644
--- a/src/com/lightdev/app/shtm/FrmMain.java
+++ b/src/com/lightdev/app/shtm/FrmMain.java
@@ -51,7 +51,7 @@ import javax.swing.JFrame;
  */
 class FrmMain extends JFrame {
     public static final String APP_NAME = "SimplyHTML";
-    public static final String VERSION = "0.16.17";
+    public static final String VERSION = "0.16.18";
     /** static reference to this instance of class FrmMain */
     private SHTMLPanelImpl mainPane;
 
diff --git a/src/com/lightdev/app/shtm/SHTMLAction.java b/src/com/lightdev/app/shtm/SHTMLAction.java
index ec925f1..344e884 100644
--- a/src/com/lightdev/app/shtm/SHTMLAction.java
+++ b/src/com/lightdev/app/shtm/SHTMLAction.java
@@ -40,11 +40,4 @@ import javax.swing.Action;
 public interface SHTMLAction extends Action {
     /** update the action's state */
     public void update();
-
-    /**
-     * this method should be called from the constructor
-     * of each SHTMLAction and can be used to get
-     * action properties from a resource file
-     */
-    public void getProperties();
 }
diff --git a/src/com/lightdev/app/shtm/SHTMLDocument.java b/src/com/lightdev/app/shtm/SHTMLDocument.java
index 23b1074..4b85cef 100644
--- a/src/com/lightdev/app/shtm/SHTMLDocument.java
+++ b/src/com/lightdev/app/shtm/SHTMLDocument.java
@@ -439,6 +439,7 @@ public class SHTMLDocument extends HTMLDocument {
         boolean emptyDocument;
         private boolean paragraphInserted;
         private boolean inBody;
+        private int inPreLevel = 0;
         private boolean paragraphCreated;
         private boolean isParagraphTag;
 
@@ -470,6 +471,13 @@ public class SHTMLDocument extends HTMLDocument {
             else if (inBody) {
                 isParagraphTag = isParagraphTag(tag);
                 if (isParagraphTag) {
+                	if(HTML.Tag.PRE.equals(tag)) {
+						inPreLevel++;
+	                	if(inPreLevel > 1)
+	                		return;
+					}
+                	else if(inPreLevel >= 1)
+                		return;
                     if (paragraphCreated && !paragraphInserted) {
                         insertParagraphEndTag(pos);
                     }
@@ -559,8 +567,8 @@ public class SHTMLDocument extends HTMLDocument {
          * Handles end tag. If a SPAN tag is directed to this method, end its action,
          * otherwise, let HTMLDocument.HTMLReader do the work
          */
-        public void handleEndTag(final HTML.Tag t, final int pos) {
-            if (t == HTML.Tag.BODY) {
+        public void handleEndTag(final HTML.Tag tag, final int pos) {
+            if (tag == HTML.Tag.BODY) {
                 if (paragraphCreated) {
                     insertParagraphEndTag(pos);
                 }
@@ -575,13 +583,16 @@ public class SHTMLDocument extends HTMLDocument {
                     super.handleText(" ".toCharArray(), pos);
                     super.handleEndTag(HTML.Tag.P, pos);
                 }
-                super.handleEndTag(t, pos);
+                super.handleEndTag(tag, pos);
             }
-            else if (t == HTML.Tag.SPAN && !keepSpanTag) {
+            else if (tag == HTML.Tag.SPAN && !keepSpanTag) {
                 handleEndSpan();
             }
             else {
-                super.handleEndTag(t, pos);
+            	if(HTML.Tag.PRE.equals(tag) && inPreLevel > 0)
+            		inPreLevel--;
+            	if(inPreLevel == 0 || ! isParagraphTag(tag))
+            		super.handleEndTag(tag, pos);
             }
         }
 
diff --git a/src/com/lightdev/app/shtm/SHTMLEditorKitActions.java b/src/com/lightdev/app/shtm/SHTMLEditorKitActions.java
index 9a1b9c8..d5ad2be 100644
--- a/src/com/lightdev/app/shtm/SHTMLEditorKitActions.java
+++ b/src/com/lightdev/app/shtm/SHTMLEditorKitActions.java
@@ -34,6 +34,8 @@ import java.io.File;
 import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.Arrays;
+import java.util.List;
 import java.util.TimerTask;
 import java.util.prefs.Preferences;
 
@@ -55,7 +57,9 @@ import javax.swing.text.Element;
 import javax.swing.text.JTextComponent;
 import javax.swing.text.SimpleAttributeSet;
 import javax.swing.text.StyleConstants;
+import javax.swing.text.StyledDocument;
 import javax.swing.text.StyledEditorKit;
+import javax.swing.text.StyledEditorKit.StyledTextAction;
 import javax.swing.text.html.CSS;
 import javax.swing.text.html.HTML;
 import javax.swing.undo.CannotRedoException;
@@ -106,16 +110,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -143,17 +138,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            final SHTMLEditorPane editor = panel.getSHTMLEditorPane();
-            if (editor != null && editor.getCurrentTableCell() != null) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -206,16 +191,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -243,16 +219,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -276,7 +243,6 @@ class SHTMLEditorKitActions {
             this.panel = panel;
             putValue(Action.NAME, SHTMLPanelImpl.fontBoldAction);
             putValue(SHTMLPanelImpl.ACTION_SELECTED_KEY, SHTMLPanelImpl.ACTION_UNSELECTED);
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.CTRL_MASK));
             SHTMLPanelImpl.getActionProperties(this, SHTMLPanelImpl.fontBoldAction);
         }
 
@@ -316,11 +282,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            setEnabled(panel.getSHTMLEditorPane() != null);
+        	 this.setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         /**
@@ -491,11 +453,7 @@ class SHTMLEditorKitActions {
 
         /** update the action's state */
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            setEnabled(panel.getSHTMLEditorPane() != null);
+        	 this.setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         /** get image, etc. from resource */
@@ -524,16 +482,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -609,16 +558,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -652,16 +592,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -701,16 +632,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	 this.setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -734,7 +656,6 @@ class SHTMLEditorKitActions {
             this.panel = panel;
             putValue(Action.NAME, SHTMLPanelImpl.fontUnderlineAction);
             putValue(SHTMLPanelImpl.ACTION_SELECTED_KEY, SHTMLPanelImpl.ACTION_UNSELECTED);
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_U, KeyEvent.CTRL_MASK));
             SHTMLPanelImpl.getActionProperties(this, SHTMLPanelImpl.fontUnderlineAction);
         }
 
@@ -772,16 +693,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         /**
@@ -834,34 +746,43 @@ class SHTMLEditorKitActions {
         }
     }
 
-    static class FontColorAction extends AbstractAction implements SHTMLAction {
-        /**
-         *
-         */
-        private final SHTMLPanelImpl panel;
-        private ColorPanel hiddenColorPanel;
+    abstract static class FontColorAction extends AbstractAction implements SHTMLAction {
+    	protected static ColorPanel hiddenColorPanel = new ColorPanel("Select Color", Color.BLACK, CSS.Attribute.COLOR);
+    	protected final SHTMLPanelImpl panel;
 
-        public FontColorAction(final SHTMLPanelImpl panel) {
-            super();
-            this.panel = panel;
-            putValue(Action.NAME, SHTMLPanelImpl.fontColorAction);
-            putValue(SHTMLPanelImpl.ACTION_SELECTED_KEY, SHTMLPanelImpl.ACTION_UNSELECTED);
-            getProperties();
-            hiddenColorPanel = null;
-        }
+        public FontColorAction(SHTMLPanelImpl panel) {
+			super();
+			this.panel = panel;
+		}
 
-        public void actionPerformed(final ActionEvent e) {
+		public void actionPerformed(final ActionEvent e) {
             final SHTMLEditorPane editorPane = panel.getSHTMLEditorPane();
-            if (editorPane != null) {
-                if (hiddenColorPanel == null) {
-                    hiddenColorPanel = new ColorPanel("Select Color", Color.BLACK, CSS.Attribute.COLOR);
-                }
-                hiddenColorPanel.setValue(panel.getMaxAttributes(editorPane, null));
-                hiddenColorPanel.actionPerformed(null); // show the color chooser
-                editorPane.applyAttributes(hiddenColorPanel.getValue(), false); // apply the color setting to the editor
+            if (panel.isWYSIWYGEditorActive()) {
+                final AttributeSet color = getColor();
+				editorPane.applyAttributes(color, false); // apply the color setting to the editor
+				panel.updateActions();
             }
-            panel.updateActions();
         }
+		
+		abstract protected AttributeSet getColor();
+
+    }
+    
+    static class FontColorByDialogAction extends FontColorAction implements SHTMLAction {
+
+        public FontColorByDialogAction(final SHTMLPanelImpl panel) {
+            super(panel);
+            putValue(Action.NAME, SHTMLPanelImpl.fontColorAction);
+            getProperties();
+        }
+
+		protected AttributeSet getColor() {
+			final SHTMLEditorPane editorPane = panel.getSHTMLEditorPane();
+			hiddenColorPanel.setValue(panel.getMaxAttributes(editorPane, null));
+			hiddenColorPanel.actionPerformed(null); // show the color chooser
+			final AttributeSet color = hiddenColorPanel.getValue();
+			return color;
+		}
 
         public void getProperties() {
             SHTMLPanelImpl.getActionProperties(this, SHTMLPanelImpl.fontColorAction);
@@ -871,6 +792,57 @@ class SHTMLEditorKitActions {
         }
     }
 
+    static class SelectedFontColorAction extends FontColorAction implements SHTMLAction {
+
+        public SelectedFontColorAction(final SHTMLPanelImpl panel) {
+            super(panel);
+            putValue(Action.NAME, SHTMLPanelImpl.selectedFontColorAction);
+            getProperties();
+        }
+
+		protected AttributeSet getColor() {
+			final Color color = hiddenColorPanel.getColor();
+			final SimpleAttributeSet set = new SimpleAttributeSet();
+			final String colorRGB = "#" + Integer.toHexString(color.getRGB()).substring(2);
+			Util.styleSheet().addCSSAttribute(set,  CSS.Attribute.COLOR, colorRGB);
+			set.addAttribute(HTML.Attribute.COLOR, colorRGB);
+			return set;
+		}
+
+        public void getProperties() {
+            SHTMLPanelImpl.getActionProperties(this, SHTMLPanelImpl.selectedFontColorAction);
+        }
+
+        public void update() {
+        }
+    }
+    
+    static class FixedFontColorAction extends FontColorAction implements SHTMLAction {
+
+        private Color color;
+
+		public FixedFontColorAction(final SHTMLPanelImpl panel, String name, Color color) {
+            super(panel);
+            putValue(Action.NAME, name);
+            getProperties();
+			this.color = color;
+        }
+
+		protected AttributeSet getColor() {
+			final SimpleAttributeSet set = new SimpleAttributeSet();
+			final String colorRGB = "#" + Integer.toHexString(color.getRGB()).substring(2);
+			Util.styleSheet().addCSSAttribute(set,  CSS.Attribute.COLOR, colorRGB);
+			set.addAttribute(HTML.Attribute.COLOR, colorRGB);
+			return set;
+		}
+		
+	    public void getProperties() {
+            SHTMLPanelImpl.getActionProperties(this, (String) getValue(Action.NAME));
+        }
+
+        public void update() {
+        }
+    }
     /**
        * action to edit anchors inside a document
        */
@@ -897,16 +869,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	 this.setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -1032,7 +995,6 @@ class SHTMLEditorKitActions {
             this.panel = panel;
             setEnabled(false);
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Z, KeyEvent.CTRL_MASK));
         }
 
         public void actionPerformed(final ActionEvent e) {
@@ -1049,12 +1011,8 @@ class SHTMLEditorKitActions {
             panel.updateActions();
         }
 
-        public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            setEnabled(panel.getUndo().canUndo());
+        public void update() { this.setEnabled(panel.isWYSIWYGEditorActive());
+            setEnabled(panel.isWYSIWYGEditorActive() && panel.getUndo().canUndo());
         }
 
         public void getProperties() {
@@ -1089,16 +1047,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -1106,6 +1055,38 @@ class SHTMLEditorKitActions {
         }
     }
 
+	static public class RemoveStyleAttributeAction extends AbstractAction implements SHTMLAction {
+	    final private Object[] attributes;
+
+	    private final SHTMLPanelImpl panel;
+
+        public RemoveStyleAttributeAction(final SHTMLPanelImpl panel, String name, Object... attributes) {
+	        super(name);
+			this.panel = panel;
+	        this.attributes = attributes;
+	        SHTMLPanelImpl.getActionProperties(this, name);
+        }
+
+		public void actionPerformed(ActionEvent e) {
+		    if(!panel.isWYSIWYGEditorActive()){
+		    	return;
+		    }
+		    final JEditorPane editor = panel.getSHTMLEditorPane();
+		    final int selectionStart = editor.getSelectionStart();
+		    final int selectionEnd = editor.getSelectionEnd();
+		    if(selectionStart == selectionEnd){
+		    	return;
+		    }
+		    for(Object attribute : attributes)
+		    	SHTMLEditorKit.removeCharacterAttributes((StyledDocument) editor.getDocument(), attribute, selectionStart, selectionEnd - selectionStart);
+	    }
+		
+        public void update() {
+            this.setEnabled(panel.isWYSIWYGEditorActive());
+        }
+   }
+	
+	
     static class ClearFormatAction extends AbstractAction implements SHTMLAction {
         /**
          *
@@ -1116,8 +1097,6 @@ class SHTMLEditorKitActions {
             super();
             this.panel = panel;
             putValue(Action.NAME, SHTMLPanelImpl.clearFormatAction);
-            putValue(SHTMLPanelImpl.ACTION_SELECTED_KEY, SHTMLPanelImpl.ACTION_UNSELECTED);
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.CTRL_MASK));
             SHTMLPanelImpl.getActionProperties(this, SHTMLPanelImpl.clearFormatAction);
         }
 
@@ -1146,12 +1125,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            final SHTMLEditorPane editor = panel.getSHTMLEditorPane();
-            this.setEnabled(editor != null);
+        	 this.setEnabled(panel.isWYSIWYGEditorActive());
         }
     }
 
@@ -1167,7 +1141,6 @@ class SHTMLEditorKitActions {
         public MultipleDocFindReplaceAction(final SHTMLPanelMultipleDocImpl panel) {
             super(SHTMLPanelMultipleDocImpl.findReplaceAction);
             this.panel = panel;
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK));
             getProperties();
         }
 
@@ -1253,7 +1226,6 @@ class SHTMLEditorKitActions {
         public SingleDocFindReplaceAction(final SHTMLPanelImpl panel) {
             super(SHTMLPanelImpl.findReplaceAction);
             this.panel = panel;
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_MASK));
             getProperties();
         }
 
@@ -1327,16 +1299,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -1368,11 +1331,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            setEnabled(panel.getSHTMLEditorPane() != null);
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -1404,16 +1363,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -1421,6 +1371,73 @@ class SHTMLEditorKitActions {
         }
     }
 
+    /**
+     * change a font size setting
+     */
+    static class ChangeFontSizeAction extends AbstractAction implements SHTMLAction {
+    	enum Change{INCREASE(1), DECREASE(-1);
+    		final int changeAmount;
+
+			private Change(int changeAmount) {
+				this.changeAmount = changeAmount;
+			}
+    	};
+        /**
+         *
+         */
+        private final SHTMLPanelImpl panel;
+		private Change change;
+
+        ChangeFontSizeAction(final SHTMLPanelImpl panel, String name, Change change ) {
+            super(name);
+            this.panel = panel;
+			this.change = change;
+            SHTMLPanelImpl.getActionProperties(this, name);
+
+        }
+
+        public void actionPerformed(final ActionEvent ae) {
+			final SHTMLEditorPane editorPane = panel.getSHTMLEditorPane();
+			final AttributeSet a = panel.getMaxAttributes(editorPane, null);
+			final int size = Util.styleSheet().getFont(a).getSize();
+			int index = 0;
+			for (String availableSizeAsString : SHTMLPanelImpl.FONT_SIZES){
+				final Integer availableSizeAsNumber = Integer.valueOf(availableSizeAsString);
+				if(size < availableSizeAsNumber) {
+					setSize(change == Change.INCREASE ? index + 1 : index);
+					return;
+				}
+				else if(size == availableSizeAsNumber) {
+					setSize(index + change.changeAmount);
+					return;
+				}
+				else {
+					index++;
+					if(index == SHTMLPanelImpl.FONT_SIZES.length && change == Change.DECREASE) {
+						setSize(index - 1);
+						return;
+					}
+				}
+			}
+        }
+
+        private void setSize(int index) {
+        	if(index >= 0 && index < SHTMLPanelImpl.FONT_SIZES.length) {
+                final SimpleAttributeSet set = new SimpleAttributeSet();
+                final String relativeSize = Integer.toString(index + 1);
+                set.addAttribute(HTML.Attribute.SIZE, relativeSize);
+                Util.styleSheet().addCSSAttributeFromHTML(set, CSS.Attribute.FONT_SIZE, relativeSize /*+ "pt"*/);
+                panel.getSHTMLEditorPane().applyAttributes(set, false);
+                panel.updateActions();
+        	}
+		}
+
+		public void update() {
+			 this.setEnabled(panel.isWYSIWYGEditorActive());
+        }
+
+    }
+
     static class FormatImageAction extends AbstractAction implements SHTMLAction {
         /**
          *
@@ -1531,16 +1548,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -1580,16 +1588,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -1641,16 +1640,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -1777,16 +1767,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         public void getProperties() {
@@ -1814,16 +1795,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -1853,16 +1825,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -1890,16 +1853,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -1927,16 +1881,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -1964,16 +1909,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -2001,16 +1937,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -2038,16 +1965,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                setEnabled(true);
-            }
-            else {
-                setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive()  && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -2067,7 +1985,6 @@ class SHTMLEditorKitActions {
             this.panel = panel;
             putValue(Action.NAME, SHTMLPanelImpl.fontItalicAction);
             putValue(SHTMLPanelImpl.ACTION_SELECTED_KEY, SHTMLPanelImpl.ACTION_UNSELECTED);
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_I, KeyEvent.CTRL_MASK));
             SHTMLPanelImpl.getActionProperties(this, SHTMLPanelImpl.fontItalicAction);
         }
 
@@ -2102,16 +2019,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive());
         }
 
         /**
@@ -2176,7 +2084,6 @@ class SHTMLEditorKitActions {
             super(SHTMLPanelImpl.nextTableCellAction);
             this.panel = panel;
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0));
         }
 
         public void actionPerformed(final ActionEvent ae) {
@@ -2188,16 +2095,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -2218,7 +2116,6 @@ class SHTMLEditorKitActions {
             super(SHTMLPanelImpl.prevTableCellAction);
             this.panel = panel;
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_TAB, KeyEvent.SHIFT_MASK));
         }
 
         public void actionPerformed(final ActionEvent ae) {
@@ -2230,16 +2127,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if ((panel.getSHTMLEditorPane() != null) && (panel.getSHTMLEditorPane().getCurrentTableCell() != null)) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getSHTMLEditorPane().getCurrentTableCell() != null);
         }
 
         public void getProperties() {
@@ -2311,7 +2199,6 @@ class SHTMLEditorKitActions {
             this.panel = panel;
             setEnabled(false);
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Y, KeyEvent.CTRL_MASK));
         }
 
         public void actionPerformed(final ActionEvent e) {
@@ -2329,11 +2216,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            setEnabled(panel.getUndo().canRedo());
+        	setEnabled(panel.isWYSIWYGEditorActive() && panel.getUndo().canRedo());
         }
 
         public void getProperties() {
@@ -2353,7 +2236,6 @@ class SHTMLEditorKitActions {
             this.panel = panel;
             putValue(Action.NAME, SHTMLPanelImpl.copyAction);
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_MASK));
         }
 
         public void actionPerformed(final ActionEvent e) {
@@ -2387,7 +2269,6 @@ class SHTMLEditorKitActions {
             this.panel = panel;
             putValue(Action.NAME, SHTMLPanelImpl.cutAction);
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_MASK));
         }
 
         public void actionPerformed(final ActionEvent e) {
@@ -2421,7 +2302,6 @@ class SHTMLEditorKitActions {
             this.panel = panel;
             putValue(Action.NAME, SHTMLPanelImpl.pasteAction);
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK));
         }
 
         public void actionPerformed(final ActionEvent e) {
@@ -2457,10 +2337,7 @@ class SHTMLEditorKitActions {
         public SHTMLEditPasteOtherAction(final SHTMLPanelImpl panel) {
             super();
             this.panel = panel;
-            
             updateActionName(PasteMode.getValueFromPrefs().invert());
-            putValue(AbstractAction.ACCELERATOR_KEY,
-            		KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_MASK | InputEvent.SHIFT_DOWN_MASK));
         }
         
         public void updateActionName(final PasteMode pm)
@@ -2554,7 +2431,6 @@ class SHTMLEditorKitActions {
             this.panel = panel;
             putValue(Action.NAME, SHTMLPanelImpl.selectAllAction);
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK));
         }
 
         public void actionPerformed(final ActionEvent ae) {
@@ -2816,7 +2692,6 @@ class SHTMLEditorKitActions {
             super(SHTMLPanelImpl.exitAction);
             this.panel = panel;
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_MASK));
         }
 
         public void actionPerformed(final ActionEvent ae) {
@@ -2853,7 +2728,6 @@ class SHTMLEditorKitActions {
             super(SHTMLPanelMultipleDocImpl.newAction);
             this.panel = panel;
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK));
         }
 
         /** create a new empty document and show it */
@@ -2885,7 +2759,6 @@ class SHTMLEditorKitActions {
             super(SHTMLPanelMultipleDocImpl.openAction);
             this.panel = panel;
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_MASK));
         }
 
         public void actionPerformed(final ActionEvent ae) {
@@ -3012,7 +2885,6 @@ class SHTMLEditorKitActions {
             super(SHTMLPanelMultipleDocImpl.saveAction);
             this.panel = panel;
             getProperties();
-            putValue(AbstractAction.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_MASK));
         }
 
         public void actionPerformed(final ActionEvent ae) {
@@ -3319,16 +3191,7 @@ class SHTMLEditorKitActions {
         }
 
         public void update() {
-            if (panel.isHtmlEditorActive()) {
-                this.setEnabled(false);
-                return;
-            }
-            if (panel.getSHTMLEditorPane() != null && !panel.getSHTMLDocument().hasStyleRef()) {
-                this.setEnabled(true);
-            }
-            else {
-                this.setEnabled(false);
-            }
+        	setEnabled(panel.isWYSIWYGEditorActive() && !panel.getSHTMLDocument().hasStyleRef());
         }
 
         public void getProperties() {
diff --git a/src/com/lightdev/app/shtm/SHTMLEditorPane.java b/src/com/lightdev/app/shtm/SHTMLEditorPane.java
index 3000e0d..c2175c5 100644
--- a/src/com/lightdev/app/shtm/SHTMLEditorPane.java
+++ b/src/com/lightdev/app/shtm/SHTMLEditorPane.java
@@ -61,6 +61,8 @@ import javax.swing.JPopupMenu;
 import javax.swing.KeyStroke;
 import javax.swing.TransferHandler;
 import javax.swing.event.CaretEvent;
+import javax.swing.plaf.ComponentUI;
+import javax.swing.plaf.TextUI;
 import javax.swing.text.AttributeSet;
 import javax.swing.text.BadLocationException;
 import javax.swing.text.Caret;
@@ -106,6 +108,7 @@ import javax.swing.text.html.HTMLDocument;
  */
 public class SHTMLEditorPane extends JEditorPane implements DropTargetListener, DragSourceListener, DragGestureListener {
 	
+	private static final String DO_NOTHING = "do nothing";
 	private static final String TAB = "\t";
 	private static final String TAB_REPLACEMENT = "    ";
 
@@ -212,7 +215,19 @@ public class SHTMLEditorPane extends JEditorPane implements DropTargetListener,
         initDnd();
     }
     
-    public PasteMode getPasteMode() {
+    
+    
+    @Override
+	public void setUI(TextUI newUI) {
+		super.setUI(newUI);
+		getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke('\u0004'), DO_NOTHING);
+		getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("control T"), DO_NOTHING);
+		getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke("control H"), DO_NOTHING);
+	}
+
+
+
+	public PasteMode getPasteMode() {
 		if (forceConstantPasteMode)
 		{ 
 			return pasteMode;
diff --git a/src/com/lightdev/app/shtm/SHTMLPanelImpl.java b/src/com/lightdev/app/shtm/SHTMLPanelImpl.java
index b55f0b6..2b099b7 100644
--- a/src/com/lightdev/app/shtm/SHTMLPanelImpl.java
+++ b/src/com/lightdev/app/shtm/SHTMLPanelImpl.java
@@ -34,6 +34,7 @@ import java.util.*;
 import java.beans.PropertyChangeListener;
 import java.beans.PropertyChangeEvent;
 
+import com.lightdev.app.shtm.SHTMLEditorKitActions.ChangeFontSizeAction.Change;
 import com.lightdev.app.shtm.SHTMLEditorKitActions.SetStyleAction;
 import com.lightdev.app.shtm.SHTMLEditorKitActions.SetTagAction;
 import java.util.prefs.*;
@@ -161,11 +162,19 @@ public class SHTMLPanelImpl extends SHTMLPanel implements CaretListener {
     public static final String fontAction = "font";
     public static final String fontFamilyAction = "fontFamily";
     public static final String fontSizeAction = "fontSize";
+    public static final String increaseFontSizeAction = "increaseFontSize";
+    public static final String decreaseFontSizeAction = "decreaseFontSize";
     public static final String fontBoldAction = "fontBold";
     public static final String fontStrikethroughAction = "fontStrikethrough";
     public static final String fontItalicAction = "fontItalic";
     public static final String fontUnderlineAction = "fontUnderline";
     public static final String fontColorAction = "fontColor";
+    public static final String removeFontColorAction = "removeFontColor";
+    public static final String selectedFontColorAction = "selectedFontColor";
+    public static final String redFontColorAction = "redFontColor";
+    public static final String blueFontColorAction = "blueFontColor";
+    public static final String blackFontColorAction = "blackFontColor";
+    public static final String greenFontColorAction = "greenFontColor";
     public static final String helpTopicsAction = "helpTopics";
     public static final String aboutAction = "about";
     public static final String gcAction = "gc";
@@ -697,6 +706,9 @@ public class SHTMLPanelImpl extends SHTMLPanel implements CaretListener {
         addAction(fontAction, new SHTMLEditorKitActions.FontAction(this));
         addAction(fontFamilyAction, new SHTMLEditorKitActions.FontFamilyAction(this));
         addAction(fontSizeAction, new SHTMLEditorKitActions.FontSizeAction(this));
+        addAction(increaseFontSizeAction, new SHTMLEditorKitActions.ChangeFontSizeAction(this, increaseFontSizeAction, Change.INCREASE));
+        addAction(decreaseFontSizeAction, new SHTMLEditorKitActions.ChangeFontSizeAction(this, decreaseFontSizeAction, Change.DECREASE));
+        
         addAction(insertTableAction, new SHTMLEditorKitActions.InsertTableAction(this));
         addAction(insertTableRowAction, new SHTMLEditorKitActions.InsertTableRowAction(this, null,
             insertTableRowAction));
@@ -716,7 +728,14 @@ public class SHTMLPanelImpl extends SHTMLPanel implements CaretListener {
         addAction(fontBoldAction, new SHTMLEditorKitActions.BoldAction(this));
         addAction(fontItalicAction, new SHTMLEditorKitActions.ItalicAction(this));
         addAction(fontUnderlineAction, new SHTMLEditorKitActions.UnderlineAction(this));
-        addAction(fontColorAction, new SHTMLEditorKitActions.FontColorAction(this));
+        addAction(fontColorAction, new SHTMLEditorKitActions.FontColorByDialogAction(this));
+        addAction(selectedFontColorAction, new SHTMLEditorKitActions.SelectedFontColorAction(this));
+        addAction(redFontColorAction, new SHTMLEditorKitActions.FixedFontColorAction(this, redFontColorAction, Color.RED));
+        addAction(greenFontColorAction, new SHTMLEditorKitActions.FixedFontColorAction(this, greenFontColorAction, new Color(0, 0x80, 0)));
+        addAction(blueFontColorAction, new SHTMLEditorKitActions.FixedFontColorAction(this, blueFontColorAction, new Color(0, 0, 0xc0)));
+        addAction(blackFontColorAction, new SHTMLEditorKitActions.FixedFontColorAction(this, blackFontColorAction, new Color(0, 0, 0)));
+        addAction(removeFontColorAction, new SHTMLEditorKitActions.RemoveStyleAttributeAction(this, removeFontColorAction, HTML.Attribute.COLOR, CSS.Attribute.COLOR));
+        
         addAction(fontStrikethroughAction, new SHTMLEditorKitActions.ApplyCSSAttributeAction(this,
             fontStrikethroughAction, CSS.Attribute.TEXT_DECORATION, "line-through", false));
         addAction(paraAlignLeftAction, new SHTMLEditorKitActions.ApplyCSSAttributeAction(this,
@@ -1056,6 +1075,10 @@ public class SHTMLPanelImpl extends SHTMLPanel implements CaretListener {
     }
   }
 
+    public boolean isWYSIWYGEditorActive() {
+        return getDocumentPane() != null && editorPane != null && getDocumentPane().getSelectedTab() == DocumentPane.VIEW_TAB_LAYOUT;
+    }
+
     public boolean isHtmlEditorActive() {
         return getDocumentPane() != null && getDocumentPane().getSelectedTab() == DocumentPane.VIEW_TAB_HTML;
     }
@@ -1083,6 +1106,10 @@ public class SHTMLPanelImpl extends SHTMLPanel implements CaretListener {
             action.putValue(Action.SHORT_DESCRIPTION, toolTip);
         }
         
+        final String accelerator = Util.getResourceString(textResources, cmd + DynamicResource.acceleratorSuffix);
+        if (accelerator != null) {
+            action.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(accelerator));
+        }
     }
 
     /* ---------- undo/redo implementation ----------------------- */
diff --git a/src/com/lightdev/app/shtm/resources/SimplyHTML.properties b/src/com/lightdev/app/shtm/resources/SimplyHTML.properties
index dd693ae..7c3427a 100644
--- a/src/com/lightdev/app/shtm/resources/SimplyHTML.properties
+++ b/src/com/lightdev/app/shtm/resources/SimplyHTML.properties
@@ -107,6 +107,13 @@ fontUnderlineLabel=Underline
 fontUnderlineImage=resources/uline.gif
 fontUnderlineSelectedImage=resources/uline_on.gif
 fontColorTip=Font Color
+fontColorLabel=Font Color
+selectedFontColorLabel=Selected Font Color
+redFontColorLabel=Red
+greenFontColorLabel=Green
+blueFontColorLabel=Blue
+blackFontColorLabel=Black
+removeFontColorLabel=Remove Color
 fontUnderlineTip=switch underline on/off
 fontStrikethroughLabel=Strikethrough
 formatTableLabel=Table...
@@ -133,6 +140,8 @@ editLinkLabel=Link...
 editLinkTip=Change link settings...
 editAnchorsLabel=Anchors...
 editAnchorsTip=Set and change anchor links...
+increaseFontSizeLabel=Bigger
+decreaseFontSizeLabel=Smaller
 
 # table menu definition
 
diff --git a/src/com/lightdev/app/shtm/resources/SimplyHTML_common.properties b/src/com/lightdev/app/shtm/resources/SimplyHTML_common.properties
index 1326268..2735fcd 100644
--- a/src/com/lightdev/app/shtm/resources/SimplyHTML_common.properties
+++ b/src/com/lightdev/app/shtm/resources/SimplyHTML_common.properties
@@ -96,7 +96,7 @@ insertTableImage=resources/table.gif
 insertImageImage=resources/image.gif
 
 # format menu definition
-format=font - formatPara paraAlignLeft paraAlignCenter paraAlignRight - editNamedStyle - formatTable - formatList toggleBullets toggleNumbers - formatImage - editLink editAnchors
+format=font - formatPara paraAlignLeft paraAlignCenter paraAlignRight fontBold fontItalic - increaseFontSize decreaseFontSize - fontColor selectedFontColor redFontColor greenFontColor blueFontColor blackFontColor removeFontColor - editNamedStyle - formatTable - formatList toggleBullets toggleNumbers - formatImage - editLink editAnchors - clearFormat
 
 # format menu items
 fontImage=resources/font.gif
@@ -117,6 +117,37 @@ paraAlignRightImage=resources/algnRt.gif
 paraAlignRightSelectedIcon=resources/algnRt_on.gif
 editLinkImage=resources/link.gif
 
+# menu accelerators
+selectAllAccelerator=control A
+fontBoldAccelerator=control B
+copyAccelerator=control C
+increaseFontSizeAccelerator=control shift E  
+removeFontColorAccelerator=control D
+decreaseFontSizeAccelerator=control E
+findReplaceAccelerator=control F
+greenFontColorAccelerator=control G
+editLinkAccelerator=control H
+fontItalicAccelerator=control I
+blackFontColorAccelerator=control K
+blueFontColorAccelerator=control L
+newAccelerator=control N
+openAccelerator=control O
+exitAccelerator=control Q
+redFontColorAccelerator=control R
+saveAccelerator=control S
+clearFormatAccelerator=control T
+pasteAccelerator=control V
+pasteOtherAccelerator=control shift V
+fontUnderlineAccelerator=control U
+fontColorAccelerator=control W
+selectedFontColorAccelerator=control shift W
+lastFontColorAccelerator=control W
+nextTableCellAccelerator=TAB
+prevTableCellAccelerator=shift TAB
+cutAccelerator=control X
+redoAccelerator=control Y
+undoAccelerator=control Z
+
 # table menu definition
 table=nextTableCell prevTableCell - appendTableRow appendTableCol - insertTableRow insertTableCol - deleteTableRow deleteTableCol - toggleTableHeaderCell - moveTableRowUp moveTableRowDown moveTableColumnLeft moveTableColumnRight
 
diff --git a/src/com/lightdev/app/shtm/resources/SimplyHTML_de.properties b/src/com/lightdev/app/shtm/resources/SimplyHTML_de.properties
index e1c5f10..d5d3702 100644
--- a/src/com/lightdev/app/shtm/resources/SimplyHTML_de.properties
+++ b/src/com/lightdev/app/shtm/resources/SimplyHTML_de.properties
@@ -106,6 +106,11 @@ fontUnderlineLabel=Unterstreichung
 fontUnderlineImage=resources/uline.gif
 fontUnderlineTip=unterstreichen an- und ausschalten
 fontColorTip=Textfarbe
+fontColorLabel=Textfarbe
+selectedFontColorLabel=Selektierte Textfarbe
+redFontColorLabel=Rot
+greenFontColorLabel=Gr�n
+blueFontColorLabel=Blau
 formatTableLabel=Tabelle...
 formatTableTip=Tabelle formatieren...
 toggleBulletsLabel=Aufz\u00e4hlung ein/aus
@@ -128,6 +133,9 @@ editLinkLabel=Verkn\u00fcpfung...
 editLinkTip=Verkn\u00fcpfung bearbeiten...
 editAnchorsLabel=Anker...
 editAnchorsTip=Anker setzen und \u00e4ndern...
+increaseFontSizeLabel=Gr��er
+decreaseFontSizeLabel=Kleiner
+
 
 # table menu definition
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/simplyhtml.git



More information about the pkg-java-commits mailing list