/**
* @version $Id: MorphemePreferencePage.java 1839 2014-04-16 02:33:51Z yukihiro-kinjyo $
*
* 2012/10/24 16:06:40
* @author imai
*
* Copyright 2011-2014 TIDAコンソーシアム All Rights Reserved.
*/
package com.tida_okinawa.corona.correction.morphem.preference;
import java.io.IOException;
import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.DirectoryFieldEditor;
import org.eclipse.jface.preference.FieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.FileFieldEditor;
import org.eclipse.jface.preference.StringFieldEditor;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import com.tida_okinawa.corona.CoronaActivator;
import com.tida_okinawa.corona.common.ILogger;
import com.tida_okinawa.corona.correction.CorrectionActivator;
import com.tida_okinawa.corona.correction.morphem.compile.JumanDicTransfer;
/**
* 形態素・係り受け解析のプリファレンスページ
*
* @author imai
*
*/
public class MorphemePreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
public MorphemePreferencePage() {
super(FieldEditorPreferencePage.GRID);
setPreferenceStore(CorrectionActivator.getDefault().getPreferenceStore());
}
@Override
public void init(IWorkbench workbench) {
}
@Override
protected void createFieldEditors() {
Composite parent = getFieldEditorParent();
addField(new BooleanFieldEditor(MorphemePreference.PREF_DO_KNP, Messages.MorphemePreferencePage_fieldEditorKnp, parent)); // このフィールドは Coronaのセクションにも表示
addField(new BooleanFieldEditor(MorphemePreference.PREF_SERVER_MODE, Messages.MorphemePreferencePage_fieldEditorUseServerMode, parent));
addField(new StringFieldEditor(MorphemePreference.PREF_SERVER_USERNAME, Messages.MorphemePreferencePage_fieldEditorUserName, parent));
addField(new StringFieldEditor(MorphemePreference.PREF_SERVER_PASSWD, Messages.MorphemePreferencePage_fieldEditorPassword, parent));
addField(new MutilineTextFieldEditor(MorphemePreference.PREF_JUMAN_SERVER_CONF, Messages.MorphemePreferencePage_fieldEditorJumanSetting, parent));
addField(new FileFieldEditor(MorphemePreference.PREF_JUMAN_PROGRAM_PATH, Messages.MorphemePreferencePage_fieldEditorJumanPath, parent));
addField(new StringFieldEditor(MorphemePreference.PREF_JUMAN_PROGRAM_OPT, Messages.MorphemePreferencePage_fieldEditorJumanOption, parent));
addField(new DirectoryFieldEditor(MorphemePreference.PREF_JUMAN_INI_DIR, Messages.MorphemePreferencePage_fieldEditorJumanFolder, parent));
addField(new DirectoryFieldEditor(MorphemePreference.PREF_JUMAN_DIC_DIR, Messages.MorphemePreferencePage_fieldEditorJumanDicFolder, parent));
addField(new MutilineTextFieldEditor(MorphemePreference.PREF_KNP_SERVER_CONF, Messages.MorphemePreferencePage_fieldEditorKnpServerSetting, parent));
addField(new FileFieldEditor(MorphemePreference.PREF_KNP_PROGRAM_PATH, Messages.MorphemePreferencePage_fieldEditorKnpPath, parent));
addField(new StringFieldEditor(MorphemePreference.PREF_KNP_PROGRAM_OPT, Messages.MorphemePreferencePage_fieldEditorKnpOption, parent));
addField(new DirectoryFieldEditor(MorphemePreference.PREF_KNP_INI_DIR, Messages.MorphemePreferencePage_fieldEditorKnpFolder, parent));
addField(new BooleanFieldEditor(MorphemePreference.PREF_CONV_SJIS, Messages.MorphemePreferencePage_fieldEditorConvSJIS, parent));
final Button testBtn = new Button(parent, SWT.NONE);
testBtn.setText(Messages.MorphemePreferencePage_buttonSettingTest);
testBtn.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
performApply(); // 変更内容を反映
MorphemeSettingTester.test();
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
});
//辞書転送ボタン kobayashi
final Button dicBtn = new Button(parent, SWT.NONE);
dicBtn.setText(Messages.MorphemePreferencePage_textSendDic);
dicBtn.addSelectionListener(new SelectionListener() {
@Override
public void widgetSelected(SelectionEvent e) {
ILogger logger = CoronaActivator.getDefault().getLogger();
JumanDicTransfer jdt = new JumanDicTransfer();
try {
jdt.dicTrancefer(logger);
} catch (IOException e1) {
e1.printStackTrace();
}
}
@Override
public void widgetDefaultSelected(SelectionEvent e) {
}
});
}
}
/**
* 複数行を入力できる {@link StringFieldEditor}
*
*/
class MutilineTextFieldEditor extends FieldEditor {
Text textField;
public MutilineTextFieldEditor(String name, String labelText, Composite parent) {
init(name, labelText);
createControl(parent);
}
@Override
protected void adjustForNumColumns(int numColumns) {
GridData gd = (GridData) textField.getLayoutData();
gd.horizontalSpan = numColumns - 1;
// We only grab excess space if we have to
// If another field editor has more columns then
// we assume it is setting the width.
gd.grabExcessHorizontalSpace = gd.horizontalSpan == 1;
}
@Override
protected void doFillIntoGrid(Composite parent, int numColumns) {
getLabelControl(parent);
GridData gd = new GridData();
gd.horizontalSpan = numColumns - 1;
gd.horizontalAlignment = GridData.FILL;
gd.verticalAlignment = GridData.FILL;
gd.grabExcessVerticalSpace = true;
gd.grabExcessHorizontalSpace = true;
getTextField(parent).setLayoutData(gd);
}
protected Text getTextField(Composite parent) {
if (textField == null) {
textField = new Text(parent, SWT.MULTI | SWT.V_SCROLL);
}
return textField;
}
@Override
protected void doLoad() {
String value = getPreferenceStore().getString(getPreferenceName());
textField.setText(value);
}
@Override
protected void doLoadDefault() {
String value = getPreferenceStore().getDefaultString(getPreferenceName());
textField.setText(value);
}
@Override
protected void doStore() {
getPreferenceStore().setValue(getPreferenceName(), textField.getText());
}
@Override
public int getNumberOfControls() {
return 1;
}
}