package org.craftyourmod.mineclipse.ui.pages;
import org.craftyourmod.mineclipse.core.filemanager.BinaryFile;
import org.craftyourmod.mineclipse.core.filemanager.FileManager;
import org.craftyourmod.mineclipse.ui.Messages;
import org.craftyourmod.mineclipse.ui.providers.FileManagerLabelProvider;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
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.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.wb.swt.ResourceManager;
import org.eclipse.wb.swt.SWTResourceManager;
public class AddSourcePage extends WizardPage {
private Text txtName;
private Text txtInputBinary;
private final FormToolkit formToolkit = new FormToolkit(
Display.getDefault());
private Button btnJustCopy;
public FormToolkit getFormToolkit() {
return formToolkit;
}
public Button getBtnUseForge() {
return btnUseForge;
}
public Button getBtnUseDefaultMcp() {
return btnUseDefaultMcp;
}
private Button btnUseForge;
private Button btnUseDefaultMcp;
private Text txtYesyes;
/**
* Create the wizard.
*/
public AddSourcePage() {
super("wizardPage"); //$NON-NLS-1$
setImageDescriptor(ResourceManager.getPluginImageDescriptor(
"org.craftyourmod.mineclipse.ui", "icons/baner_addsrc01.gif")); //$NON-NLS-1$ //$NON-NLS-2$
setTitle(Messages.AddSourcePage_Title);
setDescription(Messages.AddSourcePage_Description);
setPageComplete(false);
}
public Text getTxtName() {
return txtName;
}
public Text getTxtInputBinary() {
return txtInputBinary;
}
public Button getBtnJustCopy() {
return btnJustCopy;
}
private void validate() {
if (txtName.getText().isEmpty()) {
setPageComplete(false);
setErrorMessage(""); //$NON-NLS-1$
return;
}
if (txtInputBinary.getText().isEmpty()) {
setPageComplete(false);
setErrorMessage(Messages.AddSourcePage_errors_emptyInput);
return;
}
setErrorMessage(null);
setPageComplete(true);
}
/**
* 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 lblName = new Label(container, SWT.NONE);
lblName.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false,
1, 1));
lblName.setText(Messages.AddSourcePage_lblName_text);
txtName = new Text(container, SWT.BORDER);
txtName.addModifyListener(new ModifyListener() {
@Override
public void modifyText(final ModifyEvent e) {
validate();
}
});
txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false,
2, 1));
Label lblInputBinary = new Label(container, SWT.NONE);
lblInputBinary.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false,
false, 1, 1));
lblInputBinary.setText(Messages.AddSourcePage_lblInputBinary_text);
txtInputBinary = new Text(container, SWT.BORDER);
txtInputBinary.setEditable(false);
txtInputBinary.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) {
ElementListSelectionDialog dialog = new ElementListSelectionDialog(
getShell(), new FileManagerLabelProvider());
dialog.setElements(FileManager.INSTANCE.getBins().toArray());
dialog.setBlockOnOpen(true);
dialog.setMessage(Messages.AddSourcePage_binariesListSelctionDialog_message);
dialog.open();
txtInputBinary.setText(((BinaryFile) dialog.getResult()[0])
.getName());
validate();
}
});
btnSelect.setText(Messages.AddSourcePage_btnSelect_text);
new Label(container, SWT.NONE);
btnUseForge = new Button(container, SWT.RADIO);
btnUseForge
.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD)); //$NON-NLS-1$
btnUseForge.setSelection(true);
btnUseForge.setText(Messages.AddSourcePage_btnUseForge_text);
new Label(container, SWT.NONE);
new Label(container, SWT.NONE);
btnUseDefaultMcp = new Button(container, SWT.RADIO);
btnUseDefaultMcp.setText(Messages.AddSourcePage_btnUseDefaultMcp_text);
new Label(container, SWT.NONE);
new Label(container, SWT.NONE);
ExpandableComposite xpndblcmpstExperimentalAndDebug = formToolkit
.createExpandableComposite(container,
ExpandableComposite.TWISTIE);
xpndblcmpstExperimentalAndDebug.setLayoutData(new GridData(SWT.LEFT,
SWT.FILL, false, true, 2, 1));
xpndblcmpstExperimentalAndDebug.setBackground(SWTResourceManager
.getColor(SWT.COLOR_WIDGET_BACKGROUND));
xpndblcmpstExperimentalAndDebug
.setText(Messages.AddSourcePage_xpndblcmpstExperimentalAndDebug_text);
xpndblcmpstExperimentalAndDebug.setExpanded(true);
Composite composite = new Composite(xpndblcmpstExperimentalAndDebug,
SWT.NONE);
xpndblcmpstExperimentalAndDebug.setClient(composite);
composite.setLayout(new GridLayout(4, false));
final Button btnDefault = new Button(composite, SWT.CHECK);
btnDefault.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false,
false, 4, 1));
btnDefault.setText(Messages.AddSourcePage_btnDefault_text);
new Label(composite, SWT.NONE);
new Label(composite, SWT.NONE);
btnJustCopy = new Button(composite, SWT.CHECK);
btnJustCopy.setEnabled(false);
btnJustCopy.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false,
false, 2, 1));
btnJustCopy.setText(Messages.AddSourcePage_btnJustCopy_text_2);
new Label(composite, SWT.NONE);
new Label(composite, SWT.NONE);
final Label lblOut = new Label(composite, SWT.NONE);
lblOut.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false,
1, 1));
lblOut.setText(Messages.AddSourcePage_lblNewLabel_1_text);
txtYesyes = new Text(composite, SWT.BORDER);
txtYesyes.setText(Messages.AddSourcePage_txtYesyes_text);
txtYesyes.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false,
1, 1));
new Label(composite, SWT.NONE);
new Label(composite, SWT.NONE);
Label lblSeparatedWithCommas = new Label(composite, SWT.NONE);
lblSeparatedWithCommas.setForeground(SWTResourceManager
.getColor(SWT.COLOR_DARK_GRAY));
lblSeparatedWithCommas.setFont(SWTResourceManager.getFont("Segoe UI", //$NON-NLS-1$
9, SWT.ITALIC));
lblSeparatedWithCommas.setLayoutData(new GridData(SWT.RIGHT,
SWT.CENTER, false, false, 2, 1));
lblSeparatedWithCommas
.setText(Messages.AddSourcePage_lblSeparatedWithCommas_text);
btnDefault.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
btnJustCopy.setEnabled(btnDefault.getSelection());
if (!btnDefault.getSelection()) {
btnJustCopy.setSelection(false);
lblOut.setEnabled(false);
txtYesyes.setEnabled(false);
txtYesyes.setText("Yes,yes"); //$NON-NLS-1$
setMessage(null);
} else {
setMessage(
Messages.AddSourcePage_Warning_Debug,
Status.WARNING);
lblOut.setEnabled(true);
btnJustCopy.setSelection(true);
txtYesyes.setEnabled(true);
}
validate();
}
});
}
public Text getTxtYesyes() {
return txtYesyes;
}
}