package org.nightlabs.jfire.voucher.admin.ui.editor; import java.io.File; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; 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.FileDialog; import org.eclipse.swt.widgets.Text; import org.nightlabs.base.ui.composite.XComposite; import org.nightlabs.base.ui.notification.IDirtyStateManager; import org.nightlabs.jfire.voucher.admin.ui.resource.Messages; import org.nightlabs.jfire.voucher.store.VoucherType; /** * @author Daniel.Mazurek [at] NightLabs [dot] de * */ public class VoucherLayoutComposite extends XComposite { public VoucherLayoutComposite(Composite parent, int style, VoucherType voucherType, IDirtyStateManager dirtyStateManager) { super(parent, style); this.voucherType = voucherType; this.dirtyStateManager = dirtyStateManager; createComposite(this); } private IDirtyStateManager dirtyStateManager; private Text voucherLayoutText = null; private Button browseButton = null; protected void createComposite(Composite parent) { parent.setLayout(new GridLayout(2, false)); voucherLayoutText = new Text(parent, SWT.BORDER); voucherLayoutText.setEditable(false); voucherLayoutText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); browseButton = new Button(parent, SWT.FLAT); browseButton.setText(Messages.getString("org.nightlabs.jfire.voucher.admin.ui.editor.VoucherLayoutComposite.browseButton.text")); //$NON-NLS-1$ browseButton.addSelectionListener(buttonListener); setVoucherType(voucherType); } private VoucherType voucherType = null; protected VoucherType getVoucherType() { return voucherType; } public void setVoucherType(VoucherType voucherType) { this.voucherType = voucherType; if (voucherType != null) { if (voucherType.getVoucherLayout() != null) { voucherLayoutText.setText(voucherType.getVoucherLayout().getFileName()); } else { voucherLayoutText.setText(Messages.getString("org.nightlabs.jfire.voucher.admin.ui.editor.VoucherLayoutComposite.voucherLayoutText.text_noVoucherLayoutAssigned")); //$NON-NLS-1$ } } else { voucherLayoutText.setText(Messages.getString("org.nightlabs.jfire.voucher.admin.ui.editor.VoucherLayoutComposite.voucherLayoutText.text_noVoucherType")); //$NON-NLS-1$ } } private File selectedFile = null; public File getSelectedFile() { return selectedFile; } private SelectionListener buttonListener = new SelectionListener(){ public void widgetSelected(SelectionEvent e) { FileDialog fileDialog = new FileDialog(getShell()); fileDialog.setFilterExtensions(new String[] {"*.v2d"}); //$NON-NLS-1$ String fileName = fileDialog.open(); if (fileName != null) { selectedFile = new File(fileName); voucherLayoutText.setText(selectedFile.getName()); if (dirtyStateManager != null) dirtyStateManager.markDirty(); } } public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); } }; }