1 /*******************************************************************************
2 * Copyright (c) 2015 hangum.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Lesser Public License v2.1
5 * which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
9 * hangum - initial API and implementation
10 ******************************************************************************/
11 package com
.hangum
.tadpole
.preference
.ui
;
13 import org
.apache
.commons
.lang
.math
.NumberUtils
;
14 import org
.apache
.log4j
.Logger
;
15 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
16 import org
.eclipse
.swt
.SWT
;
17 import org
.eclipse
.swt
.events
.ModifyEvent
;
18 import org
.eclipse
.swt
.events
.ModifyListener
;
19 import org
.eclipse
.swt
.layout
.GridData
;
20 import org
.eclipse
.swt
.layout
.GridLayout
;
21 import org
.eclipse
.swt
.widgets
.Button
;
22 import org
.eclipse
.swt
.widgets
.Combo
;
23 import org
.eclipse
.swt
.widgets
.Composite
;
24 import org
.eclipse
.swt
.widgets
.Control
;
25 import org
.eclipse
.swt
.widgets
.Label
;
26 import org
.eclipse
.swt
.widgets
.Text
;
27 import org
.eclipse
.ui
.IWorkbench
;
28 import org
.eclipse
.ui
.IWorkbenchPreferencePage
;
29 import org
.eclipse
.ui
.PlatformUI
;
31 import com
.hangum
.tadpole
.commons
.google
.analytics
.AnalyticCaller
;
32 import com
.hangum
.tadpole
.commons
.libs
.core
.define
.PublicTadpoleDefine
;
33 import com
.hangum
.tadpole
.commons
.libs
.core
.define
.TadpoleProperties
;
34 import com
.hangum
.tadpole
.commons
.libs
.core
.message
.CommonMessages
;
35 import com
.hangum
.tadpole
.engine
.query
.sql
.TadpoleSystem_UserInfoData
;
36 import com
.hangum
.tadpole
.preference
.Messages
;
37 import com
.hangum
.tadpole
.preference
.define
.PreferenceDefine
;
38 import com
.hangum
.tadpole
.preference
.get
.GetPreferenceGeneral
;
41 * ACE editor preference page
46 public class EditorPreferencePage
extends TadpoleDefaulPreferencePage
implements IWorkbenchPreferencePage
{
47 private static final Logger logger
= Logger
.getLogger(EditorPreferencePage
.class);
49 private Button btnAutoSave
;
51 private Combo comboFontSize
;
52 private Button btnShowGutter
;
53 private Button btnIsWrap
;
54 private Text textWrapLimit
;
55 private Combo comboTheme
;
56 private Button btnMybatisSupport
;
57 private Button btnAddComma
;
60 * Create the preference page.
62 public EditorPreferencePage() {
66 * Initialize the preference page.
68 public void init(IWorkbench workbench
) {
72 * Create contents of the preference page.
76 public Control
createContents(Composite parent
) {
77 Composite container
= new Composite(parent
, SWT
.NULL
);
78 container
.setLayout(new GridLayout(2, false));
80 Label lblTheme
= new Label(container
, SWT
.NONE
);
81 lblTheme
.setText(Messages
.get().EditorPreferencePage_lblTheme_text
);
83 comboTheme
= new Combo(container
, SWT
.READ_ONLY
);
84 comboTheme
.setLayoutData(new GridData(SWT
.FILL
, SWT
.CENTER
, true, false, 1, 1));
86 Label lblFontSize
= new Label(container
, SWT
.NONE
);
87 lblFontSize
.setText(Messages
.get().EditorPreferencePage_0
);
89 comboFontSize
= new Combo(container
, SWT
.READ_ONLY
);
90 comboFontSize
.setLayoutData(new GridData(SWT
.FILL
, SWT
.CENTER
, true, false, 1, 1));
91 comboFontSize
.add("9"); //$NON-NLS-1$
92 comboFontSize
.add("10"); //$NON-NLS-1$
93 comboFontSize
.add("11"); //$NON-NLS-1$
94 comboFontSize
.add("12"); //$NON-NLS-1$
95 comboFontSize
.add("13"); //$NON-NLS-1$
96 comboFontSize
.add("14"); //$NON-NLS-1$
97 comboFontSize
.add("15"); //$NON-NLS-1$
98 comboFontSize
.add("20"); //$NON-NLS-1$
99 comboFontSize
.add("30"); //$NON-NLS-1$
100 comboFontSize
.select(3);
102 comboFontSize
.setVisibleItemCount(9);
104 btnIsWrap
= new Button(container
, SWT
.CHECK
);
105 btnIsWrap
.setText(Messages
.get().MaximumNumberOfCharactersPerLine
);
107 textWrapLimit
= new Text(container
, SWT
.BORDER
);
108 textWrapLimit
.addModifyListener(new ModifyListener() {
109 public void modifyText(ModifyEvent event
) {
113 textWrapLimit
.setLayoutData(new GridData(SWT
.FILL
, SWT
.CENTER
, true, false, 1, 1));
115 btnShowGutter
= new Button(container
, SWT
.CHECK
);
116 btnShowGutter
.setLayoutData(new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false, 2, 1));
117 btnShowGutter
.setText(Messages
.get().EditorPreferencePage_2
);
119 btnMybatisSupport
= new Button(container
, SWT
.CHECK
);
120 btnMybatisSupport
.setLayoutData(new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false, 2, 1));
121 btnMybatisSupport
.setText(Messages
.get().isSupportMyBatisDollos
);
123 btnAutoSave
= new Button(container
, SWT
.CHECK
);
124 btnAutoSave
.setText(Messages
.get().EditorPreferencePage_3
);
125 new Label(container
, SWT
.NONE
);
127 btnAddComma
= new Button(container
, SWT
.CHECK
);
128 btnAddComma
.setText(Messages
.get().EditorPreferen_AddComma
);
129 new Label(container
, SWT
.NONE
);
134 AnalyticCaller
.track(this.getClass().getName());
140 public boolean isValid() {
141 String txtWrapLimit
= textWrapLimit
.getText();
143 if(!NumberUtils
.isNumber(txtWrapLimit
)) {
144 textWrapLimit
.setFocus();
147 setErrorMessage(CommonMessages
.get().EnterNumbersOnly
);
149 } else if(!((NumberUtils
.toInt(txtWrapLimit
) >= TadpoleProperties
.NUMBER_OF_CHARACTERS_PER_LINE_MIN
)
150 && (NumberUtils
.toInt(txtWrapLimit
) <= TadpoleProperties
.NUMBER_OF_CHARACTERS_PER_LINE_MAX
))) {
151 textWrapLimit
.setFocus();
154 setErrorMessage(String
.format(CommonMessages
.get().InvalidRange_GEAndLEWithItem
,
155 Messages
.get().MaximumNumberOfCharactersPerLine
,
156 TadpoleProperties
.NUMBER_OF_CHARACTERS_PER_LINE_MIN
,
157 TadpoleProperties
.NUMBER_OF_CHARACTERS_PER_LINE_MAX
));
161 setErrorMessage(null);
168 public boolean performOk() {
169 if(!isValid()) return false;
171 String txtAutoSave
= ""+btnAutoSave
.getSelection();
172 String txtTheme
= comboTheme
.getText();
173 String txtFontSize
= comboFontSize
.getText();
174 String txtIsWrap
= ""+btnIsWrap
.getSelection(); //$NON-NLS-1$
175 String txtWrapLimit
= textWrapLimit
.getText();
176 String txtIsGutter
= ""+btnShowGutter
.getSelection(); //$NON-NLS-1$
177 String txtMyBatisDollar
= ""+btnMybatisSupport
.getSelection();
179 String txtButtonAddComma
= ""+btnAddComma
.getSelection();
183 TadpoleSystem_UserInfoData
.updateValue(PreferenceDefine
.EDITOR_AUTOSAVE
, txtAutoSave
);
184 TadpoleSystem_UserInfoData
.updateValue(PreferenceDefine
.EDITOR_THEME
, txtTheme
);
185 TadpoleSystem_UserInfoData
.updateValue(PreferenceDefine
.EDITOR_FONT_SIZE
, txtFontSize
);
186 TadpoleSystem_UserInfoData
.updateValue(PreferenceDefine
.EDITOR_IS_WARP
, txtIsWrap
);
187 TadpoleSystem_UserInfoData
.updateValue(PreferenceDefine
.EDITOR_WRAP_LIMIT
, txtWrapLimit
);
188 TadpoleSystem_UserInfoData
.updateValue(PreferenceDefine
.EDITOR_SHOW_GUTTER
, txtIsGutter
);
189 TadpoleSystem_UserInfoData
.updateValue(PreferenceDefine
.EDITOR_MYBatisDollart
, txtMyBatisDollar
);
191 TadpoleSystem_UserInfoData
.updateValue(PreferenceDefine
.EDITOR_AddComma
, txtButtonAddComma
);
193 PlatformUI
.getPreferenceStore().setValue(PreferenceDefine
.EDITOR_CHANGE_EVENT
, "EDITOR_CHANGE_EVENT" + System
.currentTimeMillis());
195 } catch(Exception e
) {
196 logger
.error("Editor preference saveing", e
); //$NON-NLS-1$
198 MessageDialog
.openError(getShell(), CommonMessages
.get().Confirm
, Messages
.get().RDBPreferencePage_5
+ e
.getMessage());
202 return super.performOk();
206 * initialize default value
208 private void initDefaultValue() {
209 btnAutoSave
.setSelection(GetPreferenceGeneral
.getEditorAutoSave());
212 for(String strTheme
: PublicTadpoleDefine
.getMapTheme().keySet()) {
213 comboTheme
.add(strTheme
);
215 comboTheme
.setVisibleItemCount(PublicTadpoleDefine
.getMapTheme().size());
217 comboTheme
.setText(GetPreferenceGeneral
.getEditorTheme());
218 comboFontSize
.setText(GetPreferenceGeneral
.getEditorFontSize());
220 btnIsWrap
.setSelection(GetPreferenceGeneral
.getEditorIsWarp());
221 textWrapLimit
.setText(GetPreferenceGeneral
.getEditorWarpLimitValue());
222 btnShowGutter
.setSelection(GetPreferenceGeneral
.getEditorShowGutter());
223 btnMybatisSupport
.setSelection(GetPreferenceGeneral
.getIsMyBatisDollor());
225 btnAddComma
.setSelection(GetPreferenceGeneral
.getAddComma());
229 public boolean performCancel() {
232 return super.performCancel();
236 protected void performApply() {
238 super.performApply();
242 protected void performDefaults() {
245 super.performDefaults();