blob: cf65ff87124bf5336ca9634df53cc635728f2075 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2005 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
*******************************************************************************/
package org.eclipse.jst.server.tomcat.ui.internal.editor;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jst.server.tomcat.core.internal.MimeMapping;
import org.eclipse.jst.server.tomcat.ui.internal.ContextIds;
import org.eclipse.jst.server.tomcat.ui.internal.Messages;
import org.eclipse.jst.server.tomcat.ui.internal.TomcatUIPlugin;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.help.IWorkbenchHelpSystem;
/**
* Dialog to add or modify mime mappings.
*/
public class MimeMappingDialog extends Dialog {
protected MimeMapping map;
protected boolean isEdit;
/**
* MimeMappingDialog constructor comment.
* @param parentShell org.eclipse.swt.widgets.Shell
*/
public MimeMappingDialog(Shell parentShell) {
this(parentShell, new MimeMapping("", ""));
isEdit = false;
}
/**
* MimeMappingDialog constructor.
*
* @param parentShell a shell
* @param map a mime mapping
*/
public MimeMappingDialog(Shell parentShell, MimeMapping map) {
super(parentShell);
this.map = map;
isEdit = true;
}
/**
*
*/
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setImage(TomcatUIPlugin.getImage(TomcatUIPlugin.IMG_MIME_MAPPING));
if (isEdit)
newShell.setText(Messages.configurationEditorMimeMapppingDialogTitleEdit);
else
newShell.setText(Messages.configurationEditorMimeMapppingDialogTitleAdd);
}
/**
* Creates and returns the contents of the upper part
* of this dialog (above the button bar).
* <p>
* The <code>Dialog</code> implementation of this framework method
* creates and returns a new <code>Composite</code> with
* standard margins and spacing. Subclasses should override.
* </p>
*
* @param parent the parent composite to contain the dialog area
* @return the dialog area control
*/
protected Control createDialogArea(Composite parent) {
// create a composite with standard margins and spacing
Composite composite = new Composite(parent, SWT.NONE);
GridLayout layout = new GridLayout();
layout.numColumns = 2;
layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN);
layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN);
layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING);
layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING);
composite.setLayout(layout);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
composite.setFont(parent.getFont());
IWorkbenchHelpSystem whs = PlatformUI.getWorkbench().getHelpSystem();
whs.setHelp(composite, ContextIds.CONFIGURATION_EDITOR_MAPPING_DIALOG);
new Label(composite, SWT.NONE).setText(Messages.configurationEditorMimeMapppingDialogMimeType);
final Text type = new Text(composite, SWT.BORDER);
GridData data = new GridData();
data.widthHint = 150;
type.setLayoutData(data);
type.setText(map.getMimeType());
type.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
map = new MimeMapping(map.getExtension(), type.getText());
validate();
}
});
whs.setHelp(type, ContextIds.CONFIGURATION_EDITOR_MAPPING_DIALOG_TYPE);
new Label(composite, SWT.NONE).setText(Messages.configurationEditorMimeMapppingDialogMimeExtension);
final Text extension = new Text(composite, SWT.BORDER);
data = new GridData();
data.widthHint = 150;
extension.setLayoutData(data);
extension.setText(map.getExtension());
extension.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
map = new MimeMapping(extension.getText(), map.getMimeType());
validate();
}
});
whs.setHelp(extension, ContextIds.CONFIGURATION_EDITOR_MAPPING_DIALOG_EXTENSION);
Dialog.applyDialogFont(composite);
return composite;
}
protected Control createButtonBar(Composite parent) {
Control control = super.createButtonBar(parent);
validate();
return control;
}
protected void validate() {
boolean ok = true;
if (map.getExtension() == null || map.getExtension().length() < 1)
ok = false;
if (map.getMimeType() == null || map.getMimeType().length() < 1)
ok = false;
getButton(IDialogConstants.OK_ID).setEnabled(ok);
}
/**
* Return the mime mapping.
*
* @return org.eclipse.jst.server.tomcat.MimeMapping
*/
public MimeMapping getMimeMapping() {
return map;
}
}