최신버전에 맞는 타겟플렛폼 설정.
[Tadpole.git] / com.hangum.tadpole.preference / src / com / hangum / tadpole / preference / ui / EditorPreferencePage.java
blob1ac2395e9fd887eb10ecec05b0f8d2f3b45608f2
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
7 *
8 * Contributors:
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;
40 /**
41 * ACE editor preference page
43 * @author hangum
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;
59 /**
60 * Create the preference page.
62 public EditorPreferencePage() {
65 /**
66 * Initialize the preference page.
68 public void init(IWorkbench workbench) {
71 /**
72 * Create contents of the preference page.
73 * @param parent
75 @Override
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) {
110 isValid();
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);
131 initDefaultValue();
133 // google analytic
134 AnalyticCaller.track(this.getClass().getName());
136 return container;
139 @Override
140 public boolean isValid() {
141 String txtWrapLimit = textWrapLimit.getText();
143 if(!NumberUtils.isNumber(txtWrapLimit)) {
144 textWrapLimit.setFocus();
146 setValid(false);
147 setErrorMessage(CommonMessages.get().EnterNumbersOnly);
148 return false;
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();
153 setValid(false);
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));
158 return false;
161 setErrorMessage(null);
162 setValid(true);
164 return true;
167 @Override
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();
181 // 테이블에 저장
182 try {
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());
199 return false;
202 return super.performOk();
206 * initialize default value
208 private void initDefaultValue() {
209 btnAutoSave.setSelection(GetPreferenceGeneral.getEditorAutoSave());
211 // initiaize themes
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());
228 @Override
229 public boolean performCancel() {
230 initDefaultValue();
232 return super.performCancel();
235 @Override
236 protected void performApply() {
238 super.performApply();
241 @Override
242 protected void performDefaults() {
243 initDefaultValue();
245 super.performDefaults();