/* * Created on Nov 13, 2003 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package CDBuilder; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferencePage; 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.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.Control; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPreferencePage; import org.eclipse.ui.PlatformUI; /** * @author sddsim * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class CDPreferencePage extends PreferencePage implements IWorkbenchPreferencePage, SelectionListener, ModifyListener { private Button setOvrRB; private Button setAutoRB; private Button setAskRB; private Button vModeAlwysRB; private Button vModeNeverRB; private Button vModeAskRB; private Button batchOvrRB; private Button batchAutoRB; private Button batchAskRB; /** * The path to the blender .exe file program */ private Text TextFieldBlenderPath; private Button BtnBlenderPath; private Composite compositeBlenderPreferences; private Text textField; private Button pushButton_textField; private Button createCheckBox(Composite group, String label) { Button button = new Button(group, SWT.CHECK | SWT.LEFT); button.setText(label); button.addSelectionListener(this); GridData data = new GridData(); button.setLayoutData(data); return button; } private Composite createComposite(Composite parent, int numColumns) { Composite composite = new Composite(parent, SWT.NULL); //GridLayout GridLayout layout = new GridLayout(); layout.numColumns = numColumns; composite.setLayout(layout); //GridData GridData data = new GridData(); data.verticalAlignment = GridData.FILL; data.horizontalAlignment = GridData.FILL; composite.setLayoutData(data); return composite; } private Label createLabel(Composite parent, String text) { Label label = new Label(parent, SWT.LEFT); label.setText(text); GridData data = new GridData(); data.horizontalSpan = 2; data.horizontalAlignment = GridData.FILL; label.setLayoutData(data); return label; } private Button createPushButton(Composite parent, String label) { Button button = new Button(parent, SWT.PUSH); button.setText(label); button.addSelectionListener(this); GridData data = new GridData(); data.horizontalAlignment = GridData.FILL; button.setLayoutData(data); return button; } private Button createRadioButton(Composite parent, String label) { Button button = new Button(parent, SWT.RADIO | SWT.LEFT); button.setText(label); button.addSelectionListener(this); GridData data = new GridData(); button.setLayoutData(data); return button; } private Text createTextField(Composite parent) { Text text = new Text(parent, SWT.SINGLE | SWT.BORDER); text.addModifyListener(this); GridData data = new GridData(); data.horizontalAlignment = GridData.FILL; data.grabExcessHorizontalSpace = true; data.verticalAlignment = GridData.CENTER; data.grabExcessVerticalSpace = false; text.setLayoutData(data); return text; } protected IPreferenceStore doGetPreferenceStore() { return CDBuilderPlugin.getDefault().getPreferenceStore(); } private void initializeDefaults() { IPreferenceStore store = getPreferenceStore(); vModeAlwysRB.setSelection(false); vModeNeverRB.setSelection(false); vModeAskRB.setSelection(false); setOvrRB.setSelection(false); setAutoRB.setSelection(false); setAskRB.setSelection(false); batchOvrRB.setSelection(false); batchAutoRB.setSelection(false); batchAskRB.setSelection(false); int vModeChoice = store.getDefaultInt("vModeChoice"); switch (vModeChoice) { case 1: vModeAlwysRB.setSelection(true); break; case 2: vModeNeverRB.setSelection(true); break; case 3: vModeAskRB.setSelection(true); break; } int setChoice = store.getDefaultInt("setChoice"); switch (setChoice) { case 1: setOvrRB.setSelection(true); break; case 2: setAutoRB.setSelection(true); break; case 3: setAskRB.setSelection(true); break; } int batchChoice = store.getDefaultInt("batchChoice"); switch (batchChoice) { case 1: batchOvrRB.setSelection(true); break; case 2: batchAutoRB.setSelection(true); break; case 3: batchAskRB.setSelection(true); break; } TextFieldBlenderPath.setText(""); } private void initializeValues() { IPreferenceStore store = getPreferenceStore(); int vModeChoice = store.getInt("vModeChoice"); switch (vModeChoice) { case 1: vModeAlwysRB.setSelection(true); break; case 2: vModeNeverRB.setSelection(true); break; case 3: vModeAskRB.setSelection(true); break; } int setChoice = store.getInt("setChoice"); switch (setChoice) { case 1: setOvrRB.setSelection(true); break; case 2: setAutoRB.setSelection(true); break; case 3: setAskRB.setSelection(true); break; } int batchChoice = store.getInt("batchChoice"); switch (batchChoice) { case 1: batchOvrRB.setSelection(true); break; case 2: batchAutoRB.setSelection(true); break; case 3: batchAskRB.setSelection(true); break; } String blenderPath = store.getString("blenderPath"); if(blenderPath != null){ TextFieldBlenderPath.setText(blenderPath); } } /* (non-Javadoc) * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) */ protected Control createContents(Composite parent) { //Compiling Options //Verbose Mode always on, always off Composite compositeCompLabel = createComposite(parent, 2); createLabel(compositeCompLabel, "Compiling Options"); //$NON-NLS-1$ tabForward(compositeCompLabel); Composite compositeVerboseRB = createComposite(compositeCompLabel, 1); vModeAlwysRB = createRadioButton(compositeVerboseRB, "Always run in verbose mode"); vModeNeverRB = createRadioButton(compositeVerboseRB, "Never run in verbose mode"); vModeAskRB = createRadioButton(compositeVerboseRB, "Always ask"); //Simulation Options // Always auto generate set files or ask // Always auto generate batch files or ask Composite compositeSetLabel = createComposite(parent, 2); createLabel(compositeSetLabel, "Saving Set File Options"); //$NON-NLS-1$ tabForward(compositeSetLabel); Composite compositeSetRB = createComposite(compositeSetLabel, 1); setOvrRB = createRadioButton(compositeSetRB, "Always overwrite"); setAutoRB = createRadioButton(compositeSetRB, "Always autogenerate"); setAskRB = createRadioButton(compositeSetRB, "Always ask"); Composite compositeBatchLabel = createComposite(parent, 2); createLabel(compositeBatchLabel, "Saving Batch File Options"); //$NON-NLS-1$ tabForward(compositeBatchLabel); Composite compositeBatchRB = createComposite(compositeBatchLabel, 1); batchOvrRB = createRadioButton(compositeBatchRB, "Always overwrite"); batchAutoRB = createRadioButton(compositeBatchRB, "Always autogenerate"); batchAskRB = createRadioButton(compositeBatchRB, "Always ask"); // // Blender Location // Composite compositeBlenderLabel = createComposite(parent, 2); createLabel(compositeBlenderLabel, "Blender location"); tabForward(compositeBlenderLabel); compositeBlenderPreferences = createComposite(compositeBlenderLabel, 2); TextFieldBlenderPath = createTextField(compositeBlenderPreferences); TextFieldBlenderPath.setEditable(false); BtnBlenderPath = createPushButton(compositeBlenderPreferences, "Browse"); BtnBlenderPath.addSelectionListener(new SelectionAdapter(){ public void widgetSelected(SelectionEvent e){ FileDialog dialog = new FileDialog(compositeBlenderPreferences.getShell(), SWT.OPEN); dialog.setFilterNames(new String[]{"Executable Files (*.exe)"}); dialog.setFilterExtensions(new String[]{"*.exe"}); dialog.setText("Select Blender .exe file"); dialog.setFilterPath("C:\\Program Files\\"); String path = dialog.open(); if(path != null){ TextFieldBlenderPath.setText(path); } } }); initializeValues(); //font = null; return new Composite(parent, SWT.NULL); } /* (non-Javadoc) * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) */ public void init(IWorkbench workbench) { } /* (non-Javadoc) * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent) */ public void widgetSelected(SelectionEvent e) { } /* (non-Javadoc) * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent) */ public void widgetDefaultSelected(SelectionEvent e) { } /* (non-Javadoc) * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent) */ public void modifyText(ModifyEvent e) { } protected void performDefaults() { super.performDefaults(); initializeDefaults(); } /* (non-Javadoc) * Method declared on PreferencePage */ public boolean performOk() { storeValues(); CDBuilderPlugin.getDefault().savePluginPreferences(); return true; } /** * Stores the values of the controls back to the preference store. */ private void storeValues() { IPreferenceStore store = getPreferenceStore(); int vModeChoice = 1; if (vModeNeverRB.getSelection()) vModeChoice = 2; else if (vModeAskRB.getSelection()) vModeChoice = 3; store.setValue("vModeChoice", vModeChoice); int setChoice = 1; if (setAutoRB.getSelection()) setChoice = 2; else if (setAskRB.getSelection()) setChoice = 3; store.setValue("setChoice", setChoice); int batchChoice = 1; if (batchAutoRB.getSelection()) batchChoice = 2; else if (batchAskRB.getSelection()) batchChoice = 3; store.setValue("batchChoice", batchChoice); store.setValue("blenderPath", TextFieldBlenderPath.getText()); } /** * Creates a tab of one horizontal spans. * * @param parent the parent in which the tab should be created */ private void tabForward(Composite parent) { Label vfiller = new Label(parent, SWT.LEFT); GridData gridData = new GridData(); gridData = new GridData(); gridData.horizontalAlignment = GridData.BEGINNING; gridData.grabExcessHorizontalSpace = false; gridData.verticalAlignment = GridData.CENTER; gridData.grabExcessVerticalSpace = false; vfiller.setLayoutData(gridData); } }