blob: 6a82fc61c144d287af5fa701e055f66f294b8f6f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
// **********************************************************************
//
// Copyright (c) 2003-2012 ZeroC, Inc. All rights reserved.
//
// This plug-in is provided to you under the terms and conditions
// of the Eclipse Public License Version 1.0 ("EPL"). A copy of
// the EPL is available at http://www.eclipse.org/legal/epl-v10.html.
//
// **********************************************************************
package com.zeroc.slice2javaplugin.preferences;
import org.eclipse.jface.preference.*;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbench;
import com.zeroc.slice2javaplugin.Activator;
import com.zeroc.slice2javaplugin.internal.Configuration;
/**
* This class represents a preference page that is contributed to the
* Preferences dialog. By subclassing <samp>FieldEditorPreferencePage</samp>, we
* can use the field support built into JFace that allows us to create a page
* that is small and knows how to save, restore and apply itself.
* <p>
* This page is used to modify preferences only. They are stored in the
* preference store that belongs to the main plug-in class. That way,
* preferences can be accessed directly via the preference store.
*/
public class PluginPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage
{
public static final String SDK_PATH = "pathPreference";
public PluginPreferencePage()
{
super(GRID);
setPreferenceStore(Activator.getDefault().getPreferenceStore());
setDescription("Slice2Java Preferences");
}
/**
* Creates the field editors. Field editors are abstractions of the common
* GUI blocks needed to manipulate various types of preferences. Each field
* editor knows how to save and restore itself.
*/
public void createFieldEditors()
{
addField(new SdkDirectoryFieldEditor(SDK_PATH, "&SDK Location:", getFieldEditorParent()));
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init(IWorkbench workbench)
{
}
private static class SdkDirectoryFieldEditor extends DirectoryFieldEditor
{
public SdkDirectoryFieldEditor(String name, String labelText, Composite parent)
{
super(name, labelText, parent);
setEmptyStringAllowed(false);
}
/**
* Method declared on StringFieldEditor and overridden in
* DirectoryFieldEditor. Checks whether the text input field contains a
* valid directory.
*
* @return True if the apply/ok button should be enabled in the pref
* panel
*/
@Override
protected boolean doCheckState()
{
String dir = getTextControl().getText();
dir = dir.trim();
if(!Configuration.verifyIceHome(dir))
{
setErrorMessage("Invalid SDK Location");
return false;
}
clearMessage();
return true;
}
@Override
public Text getTextControl(Composite parent)
{
setValidateStrategy(VALIDATE_ON_KEY_STROKE);
return super.getTextControl(parent);
}
}
}
|