package org.craftyourmod.mineclipse.ui.pages; import java.io.File; import org.craftyourmod.mineclipse.ui.Messages; import org.craftyourmod.mineclipse.ui.dialogs.MinecraftFileSelectionDialog; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.WizardPage; 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.Label; import org.eclipse.swt.widgets.Text; public class OverrideFilePage extends WizardPage { private Text text; private final IStructuredSelection selection; private IStatus status; private File selectedFile; /** * Create the wizard. * * @param selection2 */ public OverrideFilePage(final IStructuredSelection selection) { super("wizardPage"); //$NON-NLS-1$ setTitle(Messages.OverrideFilePage_Title); setDescription(Messages.OverrideFilePage_Desc); this.selection = selection; } /** * Create contents of the wizard. * * @param parent */ @Override public void createControl(final Composite parent) { Composite container = new Composite(parent, SWT.NULL); setControl(container); container.setLayout(new GridLayout(3, false)); Label lblFile = new Label(container, SWT.NONE); lblFile.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblFile.setText(Messages.OverrideFilePage_File); text = new Text(container, SWT.BORDER); text.setEditable(false); text.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); Button btnSelect = new Button(container, SWT.NONE); btnSelect.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e) { MinecraftFileSelectionDialog d = new MinecraftFileSelectionDialog( getShell(), selection); d.create(); d.open(); File r = (File) d.getResult()[0]; text.setText(r.getName()); setSelectedFile(r); validate(); } }); btnSelect.setText(Messages.OverrideFilePage_Select); } /** * @return the status */ public IStatus getStatus() { return status; } /** * @param status * the status to set */ public void setStatus(final IStatus status) { this.status = status; updateMessage(); } private void updateMessage() { if (!status.isOK()) { int kind = NONE; setPageComplete(true); switch (status.getSeverity()) { case IStatus.ERROR: setPageComplete(false); kind = ERROR; break; case IStatus.CANCEL: kind = NONE; break; case IStatus.WARNING: kind = WARNING; default: break; } setMessage(status.getMessage(), kind); } else { setErrorMessage(null); setPageComplete(true); } } protected void validate() { if (text.getText().isEmpty()) setStatus(new Status(IStatus.ERROR, org.craftyourmod.mineclipse.ui.Activator.PLUGIN_ID, Messages.OverrideFilePage_Error_NoFile)); else setStatus(Status.OK_STATUS); } /** * @return the selectedFile */ public File getSelectedFile() { return selectedFile; } /** * @param selectedFile * the selectedFile to set */ public void setSelectedFile(final File selectedFile) { this.selectedFile = selectedFile; } }