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 <[email protected]>
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

_______________________________________________
pkg-java-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to