blob: 7bff14c6cc9cff52b54c7f2878dfc8e4252b717f [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
package org.eclipse.wst.dtd.ui.internal.preferences;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Preferences;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.osgi.util.NLS;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.dialogs.PreferenceLinkArea;
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
import org.eclipse.wst.dtd.core.internal.DTDCorePlugin;
import org.eclipse.wst.dtd.core.internal.preferences.DTDCorePreferenceNames;
import org.eclipse.wst.dtd.core.internal.provisional.contenttype.ContentTypeIdForDTD;
import org.eclipse.wst.dtd.ui.internal.DTDUIMessages;
import org.eclipse.wst.dtd.ui.internal.DTDUIPlugin;
import org.eclipse.wst.dtd.ui.internal.editor.IHelpContextIds;
import org.eclipse.wst.sse.ui.internal.preferences.ui.AbstractPreferencePage;
public class DTDFilesPreferencePage extends AbstractPreferencePage {
private Combo fDefaultSuffix = null;
private List fValidExtensions = null;
protected Control createContents(final Composite parent) {
Composite composite = super.createComposite(parent, 1);
PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, IHelpContextIds.DTD_PREFWEBX_FILES_HELPID);
new PreferenceLinkArea(composite, SWT.WRAP | SWT.MULTI, "org.eclipse.wst.sse.ui.preferences.editor", DTDUIMessages._UI_STRUCTURED_TEXT_EDITOR_PREFS_LINK,//$NON-NLS-1$
(IWorkbenchPreferenceContainer) getContainer(), null).getControl().setLayoutData(GridDataFactory.fillDefaults().hint(150, SWT.DEFAULT).create());
new Label(composite, SWT.NONE).setLayoutData(GridDataFactory.swtDefaults().create());
Group creatingGroup = createGroup(composite, 2);
creatingGroup.setText(DTDUIMessages.Creating_files);
// Default extension for New file Wizard
createLabel(creatingGroup, DTDUIMessages.DTDFilesPreferencePage_ExtensionLabel);
fDefaultSuffix = createDropDownBox(creatingGroup);
String[] validExtensions = (String[]) getValidExtensions().toArray(new String[0]);
Arrays.sort(validExtensions);
fDefaultSuffix.setItems(validExtensions);
fDefaultSuffix.addSelectionListener(this);
setSize(composite);
loadPreferences();
return composite;
}
public void dispose() {
fDefaultSuffix.removeModifyListener(this);
super.dispose();
}
protected IPreferenceStore doGetPreferenceStore() {
return DTDUIPlugin.getDefault().getPreferenceStore();
}
protected void doSavePreferenceStore() {
DTDCorePlugin.getInstance().savePluginPreferences(); // model
}
/**
* Get content type associated with this new file wizard
*
* @return IContentType
*/
private IContentType getContentType() {
return Platform.getContentTypeManager().getContentType(ContentTypeIdForDTD.ContentTypeID_DTD);
}
/**
* Get list of valid extensions
*
* @return List
*/
private List getValidExtensions() {
if (fValidExtensions == null) {
IContentType type = getContentType();
fValidExtensions = new ArrayList(Arrays.asList(type.getFileSpecs(IContentType.FILE_EXTENSION_SPEC)));
}
return fValidExtensions;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.sse.ui.preferences.ui.AbstractPreferencePage#getModelPreferences()
*/
protected Preferences getModelPreferences() {
return DTDCorePlugin.getInstance().getPluginPreferences();
}
protected void initializeValues() {
String suffix = getModelPreferences().getString(DTDCorePreferenceNames.DEFAULT_EXTENSION);
fDefaultSuffix.setText(suffix);
}
protected void performDefaults() {
String suffix = getModelPreferences().getDefaultString(DTDCorePreferenceNames.DEFAULT_EXTENSION);
fDefaultSuffix.setText(suffix);
super.performDefaults();
}
public boolean performOk() {
boolean result = super.performOk();
doSavePreferenceStore();
return result;
}
protected void storeValues() {
String suffix = fDefaultSuffix.getText();
getModelPreferences().setValue(DTDCorePreferenceNames.DEFAULT_EXTENSION, suffix);
}
protected void validateValues() {
boolean isValid = false;
Iterator i = getValidExtensions().iterator();
while (i.hasNext() && !isValid) {
String extension = (String) i.next();
isValid = extension.equalsIgnoreCase(fDefaultSuffix.getText());
}
if (!isValid) {
setErrorMessage(NLS.bind(DTDUIMessages.DTDFilesPreferencePage_ExtensionError, getValidExtensions().toString()));
setValid(false);
}
else {
setErrorMessage(null);
setValid(true);
}
}
}