blob: 6a1a9c9c2c03d1718e0f132bdb07711017cfa00d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2012 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.bpel.ui.dialogs;
import org.eclipse.bpel.ui.BPELUIPlugin;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.dialogs.TrayDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class SaveImageDialog extends TrayDialog {
private static final String SETTINGS_IS_TRANSPARENT = "Transparent";
private static final String SETTINGS_DIRECTORY = "Directory";
private Text txtImageFileName;
private Button btnTransparent;
private String fileNamePart;
private String imageFileName;
private boolean transparent;
private IDialogSettings settings;
public SaveImageDialog(Shell parentShell, String filename) {
super(parentShell);
int shellStyle = getShellStyle();
setShellStyle(shellStyle | SWT.MAX | SWT.RESIZE);
this.fileNamePart = stripExtenstion(filename);
settings = BPELUIPlugin.INSTANCE.getDialogSettingsFor(this);
}
@Override
protected void configureShell(Shell shell) {
super.configureShell(shell);
shell.setText("Export as image");
}
@Override
protected Control createDialogArea(Composite parent) {
Composite composite = (Composite) super.createDialogArea(parent);
GridLayout layout = (GridLayout) composite.getLayout();
layout.numColumns = 3;
new Label(composite, SWT.NONE).setText("To image file:");
txtImageFileName = new Text(composite, SWT.BORDER);
txtImageFileName.setLayoutData(new GridData(GridData.FILL_HORIZONTAL
| GridData.GRAB_HORIZONTAL));
txtImageFileName.addListener(SWT.Modify, new Listener() {
public void handleEvent(Event event) {
btnTransparent.setEnabled(txtImageFileName.getText().endsWith(
".png"));
}
});
Button browseButton = new Button(composite, SWT.NONE);
browseButton.setText("Browse...");
browseButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
selectFile();
}
});
btnTransparent = new Button(composite, SWT.CHECK);
btnTransparent.setText("Transparent background");
GridData gd = new GridData();
gd.widthHint = 400;
gd.horizontalSpan = 3;
btnTransparent.setLayoutData(gd);
applySettings();
return composite;
}
private void applySettings() {
String dir = settings.get(SETTINGS_DIRECTORY);
if (dir != null)
txtImageFileName.setText((new Path(dir)).append(fileNamePart)
.addFileExtension("png").toOSString());
btnTransparent.setSelection(settings
.getBoolean(SETTINGS_IS_TRANSPARENT));
}
private void selectFile() {
String[] filterExtensions = new String[] { "*.png", "*.jpg", "*.bmp" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
String[] filterNames = new String[] {
"PNG (*.png)", "JPEG (*.jpg)", "BMP (*.bmp)" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
FileDialog fileDialog = new FileDialog(getShell(), SWT.SAVE);
fileDialog.setFilterPath(txtImageFileName.getText());
fileDialog.setFileName(fileNamePart);
fileDialog.setFilterNames(filterNames);
fileDialog.setFilterExtensions(filterExtensions);
fileDialog.setText("Export as");
String result = fileDialog.open();
if (result != null) {
txtImageFileName.setText(result);
}
}
private String stripExtenstion(String fileName) {
int pos = fileName.lastIndexOf('.');
return (pos == -1) ? fileName : fileName.substring(0, pos);
}
public String getFileName() {
return imageFileName;
}
public boolean isTransparent() {
return transparent;
}
@Override
protected void okPressed() {
imageFileName = txtImageFileName.getText();
transparent = btnTransparent.getSelection();
settings.put(SETTINGS_IS_TRANSPARENT, transparent);
settings.put(SETTINGS_DIRECTORY, (new Path(imageFileName)
.removeLastSegments(1).toString()));
super.okPressed();
}
}