001/*
002 * #%L
003 * GwtMaterial
004 * %%
005 * Copyright (C) 2015 - 2017 GwtMaterialDesign
006 * %%
007 * Licensed under the Apache License, Version 2.0 (the "License");
008 * you may not use this file except in compliance with the License.
009 * You may obtain a copy of the License at
010 * 
011 *      http://www.apache.org/licenses/LICENSE-2.0
012 * 
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 * #L%
019 */
020package gwt.material.design.addins.client.richeditor.base;
021
022import com.google.gwt.core.client.JsArrayString;
023import gwt.material.design.addins.client.richeditor.base.constants.ToolbarButton;
024
025public class ToolBarManager {
026
027    private ToolbarButton[] styleOptions = new ToolbarButton[]
028            {ToolbarButton.STYLE, ToolbarButton.BOLD, ToolbarButton.ITALIC, ToolbarButton.UNDERLINE, ToolbarButton.STRIKETHROUGH, ToolbarButton.CLEAR, ToolbarButton.SUPERSCRIPT, ToolbarButton.SUBSCRIPT};
029    private ToolbarButton[] fontOptions = new ToolbarButton[]
030            {ToolbarButton.FONT_SIZE, ToolbarButton.FONT_NAME};
031    private ToolbarButton[] colorOptions = new ToolbarButton[]
032            {ToolbarButton.COLOR};
033    private ToolbarButton[] undoOptions = new ToolbarButton[]
034            {ToolbarButton.UNDO, ToolbarButton.REDO, ToolbarButton.HELP};
035    private ToolbarButton[] ckMediaOptions = new ToolbarButton[]
036            {ToolbarButton.CK_IMAGE_UPLOAD, ToolbarButton.CK_IMAGE_VIDEO};
037    private ToolbarButton[] miscOptions = new ToolbarButton[]
038            {ToolbarButton.LINK, ToolbarButton.PICTURE, ToolbarButton.TABLE, ToolbarButton.HR, ToolbarButton.CODE_VIEW, ToolbarButton.FULLSCREEN};
039    private ToolbarButton[] paraOptions = new ToolbarButton[]
040            {ToolbarButton.UL, ToolbarButton.OL, ToolbarButton.PARAGRAPH, ToolbarButton.LEFT, ToolbarButton.CENTER, ToolbarButton.RIGHT, ToolbarButton.JUSTIFY, ToolbarButton.OUTDENT, ToolbarButton.INDENT};
041    private ToolbarButton[] heightOptions = new ToolbarButton[]
042            {ToolbarButton.LINE_HEIGHT};
043
044    public Object[][] getToolbars() {
045        // Set up the toolbar items
046        Object[][] toolbar = new Object[][]{};
047        toolbar[0] = new Object[]{"style", extractOptions(getStyleOptions())};
048        toolbar[1] = new Object[]{"para", extractOptions(getParaOptions())};
049        toolbar[2] = new Object[]{"height", extractOptions(getHeightOptions())};
050        toolbar[3] = new Object[]{"undo", extractOptions(getUndoOptions())};
051        toolbar[4] = new Object[]{"fonts", extractOptions(getFontOptions())};
052        toolbar[5] = new Object[]{"color", extractOptions(getColorOptions())};
053        toolbar[6] = new Object[]{"ckMedia", extractOptions(getCkMediaOptions())};
054        toolbar[7] = new Object[]{"misc", extractOptions(getMiscOptions())};
055        return toolbar;
056    }
057
058    public ToolbarButton[] getStyleOptions() {
059        return styleOptions;
060    }
061
062    public void setStyleOptions(ToolbarButton... styleOptions) {
063        this.styleOptions = styleOptions;
064    }
065
066    public ToolbarButton[] getFontOptions() {
067        return fontOptions;
068    }
069
070    public void setFontOptions(ToolbarButton... fontOptions) {
071        this.fontOptions = fontOptions;
072    }
073
074    public ToolbarButton[] getColorOptions() {
075        return colorOptions;
076    }
077
078    public void setColorOptions(ToolbarButton... colorOptions) {
079        this.colorOptions = colorOptions;
080    }
081
082    public ToolbarButton[] getUndoOptions() {
083        return undoOptions;
084    }
085
086    public void setUndoOptions(ToolbarButton... undoOptions) {
087        this.undoOptions = undoOptions;
088    }
089
090    public ToolbarButton[] getCkMediaOptions() {
091        return ckMediaOptions;
092    }
093
094    public void setCkMediaOptions(ToolbarButton... ckMediaOptions) {
095        this.ckMediaOptions = ckMediaOptions;
096    }
097
098    public ToolbarButton[] getMiscOptions() {
099        return miscOptions;
100    }
101
102    public void setMiscOptions(ToolbarButton... miscOptions) {
103        this.miscOptions = miscOptions;
104    }
105
106    public ToolbarButton[] getParaOptions() {
107        return paraOptions;
108    }
109
110    public void setParaOptions(ToolbarButton... paraOptions) {
111        this.paraOptions = paraOptions;
112    }
113
114    public ToolbarButton[] getHeightOptions() {
115        return heightOptions;
116    }
117
118    public void setHeightOptions(ToolbarButton... heightOptions) {
119        this.heightOptions = heightOptions;
120    }
121
122    protected JsArrayString extractOptions(ToolbarButton[] options) {
123        JsArrayString jsOptions = JsArrayString.createArray().cast();
124        for (ToolbarButton option : options) {
125            jsOptions.push(option.getId());
126        }
127        return jsOptions;
128    }
129}