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}