blob: 8603cfb387a3d00e1dd5331c3eb82c4a99bf48f8 [file] [log] [blame]
david_williamscfdb2cd2004-11-11 08:37:49 +00001/*******************************************************************************
nitindd72d5172010-12-31 08:27:32 +00002 * Copyright (c) 2001, 2010 IBM Corporation and others.
david_williamscfdb2cd2004-11-11 08:37:49 +00003 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
amywuecebb042007-04-10 20:07:35 +00007 *
david_williamscfdb2cd2004-11-11 08:37:49 +00008 * Contributors:
9 * IBM Corporation - initial API and implementation
10 * Jens Lukowski/Innoopract - initial renaming/restructuring
11 *
12 *******************************************************************************/
nitindd6e591d2005-03-14 22:21:57 +000013package org.eclipse.wst.dtd.ui.internal.preferences;
david_williamscfdb2cd2004-11-11 08:37:49 +000014
amywufe0f3612006-01-25 03:48:57 +000015import java.util.ArrayList;
16import java.util.Arrays;
17import java.util.Iterator;
18import java.util.List;
19
20import org.eclipse.core.runtime.Platform;
david_williamscfdb2cd2004-11-11 08:37:49 +000021import org.eclipse.core.runtime.Preferences;
amywufe0f3612006-01-25 03:48:57 +000022import org.eclipse.core.runtime.content.IContentType;
david_williamscfdb2cd2004-11-11 08:37:49 +000023import org.eclipse.jface.preference.IPreferenceStore;
amywufe0f3612006-01-25 03:48:57 +000024import org.eclipse.osgi.util.NLS;
nitind65cbd8e2006-12-12 06:09:32 +000025import org.eclipse.swt.widgets.Combo;
david_williamscfdb2cd2004-11-11 08:37:49 +000026import org.eclipse.swt.widgets.Composite;
27import org.eclipse.swt.widgets.Control;
amywufe0f3612006-01-25 03:48:57 +000028import org.eclipse.swt.widgets.Group;
nitindec93f942005-11-16 00:06:14 +000029import org.eclipse.ui.PlatformUI;
nitindd6e591d2005-03-14 22:21:57 +000030import org.eclipse.wst.dtd.core.internal.DTDCorePlugin;
amywufe0f3612006-01-25 03:48:57 +000031import org.eclipse.wst.dtd.core.internal.preferences.DTDCorePreferenceNames;
32import org.eclipse.wst.dtd.core.internal.provisional.contenttype.ContentTypeIdForDTD;
33import org.eclipse.wst.dtd.ui.internal.DTDUIMessages;
david_williams425ffe72004-12-07 21:46:39 +000034import org.eclipse.wst.dtd.ui.internal.DTDUIPlugin;
david_williamscfdb2cd2004-11-11 08:37:49 +000035import org.eclipse.wst.dtd.ui.internal.editor.IHelpContextIds;
david_williamsf3680f02005-04-13 22:43:54 +000036import org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage;
david_williamscfdb2cd2004-11-11 08:37:49 +000037
38
39public class DTDFilesPreferencePage extends AbstractPreferencePage {
nitind65cbd8e2006-12-12 06:09:32 +000040 private Combo fDefaultSuffix = null;
amywufe0f3612006-01-25 03:48:57 +000041 private List fValidExtensions = null;
david_williamscfdb2cd2004-11-11 08:37:49 +000042
nitindde12ce62008-01-31 02:24:31 +000043 protected Control createContents(final Composite parent) {
44 Composite composite = super.createComposite(parent, 1);
nitindec93f942005-11-16 00:06:14 +000045 PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IHelpContextIds.DTD_PREFWEBX_FILES_HELPID);
david_williamscfdb2cd2004-11-11 08:37:49 +000046
amywufe0f3612006-01-25 03:48:57 +000047 Group creatingGroup = createGroup(composite, 2);
48 creatingGroup.setText(DTDUIMessages.Creating_files);
49
50 // Default extension for New file Wizard
51 createLabel(creatingGroup, DTDUIMessages.DTDFilesPreferencePage_ExtensionLabel);
nitind65cbd8e2006-12-12 06:09:32 +000052 fDefaultSuffix = createDropDownBox(creatingGroup);
53 String[] validExtensions = (String[]) getValidExtensions().toArray(new String[0]);
54 Arrays.sort(validExtensions);
55 fDefaultSuffix.setItems(validExtensions);
56 fDefaultSuffix.addSelectionListener(this);
amywufe0f3612006-01-25 03:48:57 +000057
david_williamscfdb2cd2004-11-11 08:37:49 +000058 setSize(composite);
59 loadPreferences();
60
61 return composite;
62 }
63
amywufe0f3612006-01-25 03:48:57 +000064 public void dispose() {
65 fDefaultSuffix.removeModifyListener(this);
66 super.dispose();
67 }
68
david_williamscfdb2cd2004-11-11 08:37:49 +000069 protected IPreferenceStore doGetPreferenceStore() {
david_williams425ffe72004-12-07 21:46:39 +000070 return DTDUIPlugin.getDefault().getPreferenceStore();
david_williamscfdb2cd2004-11-11 08:37:49 +000071 }
72
73 protected void doSavePreferenceStore() {
nitindd6e591d2005-03-14 22:21:57 +000074 DTDCorePlugin.getInstance().savePluginPreferences(); // model
david_williamscfdb2cd2004-11-11 08:37:49 +000075 }
76
amywufe0f3612006-01-25 03:48:57 +000077 /**
78 * Get content type associated with this new file wizard
79 *
80 * @return IContentType
81 */
82 private IContentType getContentType() {
83 return Platform.getContentTypeManager().getContentType(ContentTypeIdForDTD.ContentTypeID_DTD);
84 }
85
86 /**
87 * Get list of valid extensions
88 *
89 * @return List
90 */
91 private List getValidExtensions() {
92 if (fValidExtensions == null) {
93 IContentType type = getContentType();
94 fValidExtensions = new ArrayList(Arrays.asList(type.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)));
95 }
96 return fValidExtensions;
97 }
98
david_williamscfdb2cd2004-11-11 08:37:49 +000099 /*
100 * (non-Javadoc)
101 *
102 * @see org.eclipse.wst.sse.ui.preferences.ui.AbstractPreferencePage#getModelPreferences()
103 */
104 protected Preferences getModelPreferences() {
nitindd6e591d2005-03-14 22:21:57 +0000105 return DTDCorePlugin.getInstance().getPluginPreferences();
david_williamscfdb2cd2004-11-11 08:37:49 +0000106 }
107
amywufe0f3612006-01-25 03:48:57 +0000108 protected void initializeValues() {
109 String suffix = getModelPreferences().getString(DTDCorePreferenceNames.DEFAULT_EXTENSION);
110 fDefaultSuffix.setText(suffix);
111 }
112
113 protected void performDefaults() {
114 String suffix = getModelPreferences().getDefaultString(DTDCorePreferenceNames.DEFAULT_EXTENSION);
115 fDefaultSuffix.setText(suffix);
116
117 super.performDefaults();
118 }
119
david_williamscfdb2cd2004-11-11 08:37:49 +0000120 public boolean performOk() {
121 boolean result = super.performOk();
122
123 doSavePreferenceStore();
124
125 return result;
126 }
amywufe0f3612006-01-25 03:48:57 +0000127
128 protected void storeValues() {
129 String suffix = fDefaultSuffix.getText();
130 getModelPreferences().setValue(DTDCorePreferenceNames.DEFAULT_EXTENSION, suffix);
131 }
132
133 protected void validateValues() {
134 boolean isValid = false;
135 Iterator i = getValidExtensions().iterator();
136 while (i.hasNext() && !isValid) {
137 String extension = (String) i.next();
138 isValid = extension.equalsIgnoreCase(fDefaultSuffix.getText());
139 }
140
141 if (!isValid) {
142 setErrorMessage(NLS.bind(DTDUIMessages.DTDFilesPreferencePage_ExtensionError, getValidExtensions().toString()));
143 setValid(false);
144 }
145 else {
146 setErrorMessage(null);
147 setValid(true);
148 }
149 }
david_williamscfdb2cd2004-11-11 08:37:49 +0000150}