package io.sloeber.ui; import org.eclipse.core.resources.IProject; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.swt.SWT; import org.eclipse.swt.events.KeyEvent; import org.eclipse.swt.events.KeyListener; 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.DirectoryDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import org.eclipse.ui.dialogs.WizardResourceImportPage; /** * Import_Source_Folder_Page is the one and only page in the source folder * import wizard. It controls a text field and a browse button. * * @author Jan Baeyens * */ public class Import_Source_Folder_Page extends WizardResourceImportPage { protected static final String EMPTY_STRING = ""; //$NON-NLS-1$ protected Text controlLibraryPath; private Button controlBrowseButton; private IProject mProject = null; protected Import_Source_Folder_Page(IProject project, String name, IStructuredSelection selection) { super(name, selection); setImportProject(project); if (this.mProject == null) { setTitle(Messages.Handler_No_project_found); setDescription(Messages.ui_import_no_arduino_project_help); } else { setTitle(Messages.ui_import_source_folder); setDescription(Messages.ui_import_source_folder_help + ' ' + this.mProject.getName()); } } @Override protected void createSourceGroup(Composite parent) { Composite composite = new Composite(parent, SWT.NONE); GridLayout theGridLayout = new GridLayout(); GridData theGriddata; theGridLayout.numColumns = 3; composite.setLayout(theGridLayout); composite.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL)); composite.setFont(parent.getFont()); Label line = new Label(composite, SWT.HORIZONTAL | SWT.BOLD); line.setText(Messages.ui_select_folder); theGriddata = new GridData(SWT.FILL, SWT.CENTER, true, false); theGriddata.horizontalSpan = 3; line.setLayoutData(theGriddata); Label TheLabel = new Label(composite, SWT.NONE); TheLabel.setText("Source Folder Location:"); //$NON-NLS-1$ theGriddata = new GridData(); theGriddata.horizontalAlignment = SWT.LEFT; theGriddata.horizontalSpan = 1; theGriddata.grabExcessHorizontalSpace = false; TheLabel.setLayoutData(theGriddata); this.controlLibraryPath = new Text(composite, SWT.SINGLE | SWT.BORDER); theGriddata = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL); theGriddata.widthHint = SIZING_TEXT_FIELD_WIDTH; // theGriddata.horizontalSpan = 1; this.controlLibraryPath.setLayoutData(theGriddata); this.controlLibraryPath.addKeyListener(new KeyListener() { @SuppressWarnings("synthetic-access") @Override public void keyReleased(KeyEvent e) { updateWidgetEnablements(); } @Override public void keyPressed(KeyEvent e) { // nothing to do here } }); this.controlBrowseButton = new Button(composite, SWT.NONE); this.controlBrowseButton.setText("Browse..."); //$NON-NLS-1$ theGriddata = new GridData(); theGriddata.horizontalSpan = 1; theGriddata.horizontalAlignment = SWT.LEAD; theGriddata.grabExcessHorizontalSpace = false; this.controlBrowseButton.setLayoutData(theGriddata); this.controlBrowseButton.addSelectionListener(new SelectionAdapter() { @SuppressWarnings("synthetic-access") @Override public void widgetSelected(SelectionEvent event) { final Shell shell = new Shell(); DirectoryDialog theDialog = new DirectoryDialog(shell); if ((Import_Source_Folder_Page.this.controlLibraryPath.getText() == null) || (Import_Source_Folder_Page.this.controlLibraryPath.getText() == EMPTY_STRING)) { theDialog.setFilterPath(Import_Source_Folder_Page.this.controlLibraryPath.getText()); } String Path = theDialog.open(); if (Path != null) { Import_Source_Folder_Page.this.controlLibraryPath.setText(Path); updateWidgetEnablements(); } } }); line = new Label(composite, SWT.HORIZONTAL | SWT.BOLD); line.setText(Messages.ui_import_subfolder_to_import_to); theGriddata = new GridData(SWT.FILL, SWT.CENTER, true, false); theGriddata.horizontalSpan = 3; line.setLayoutData(theGriddata); } @Override protected ITreeContentProvider getFileProvider() { return null; } @Override protected ITreeContentProvider getFolderProvider() { return null; } public boolean canFinish() { return !((this.controlLibraryPath.getText().equals(EMPTY_STRING)) || (getContainerFullPath() == null)); } public String GetLibraryFolder() { return this.controlLibraryPath.getText() == null ? EMPTY_STRING : this.controlLibraryPath.getText().trim(); } public void setImportProject(IProject project) { if (project != null) { this.mProject = project; setContainerFieldValue(project.getName()); } } public IProject getProject() { if (validateDestinationGroup()) { return getSpecifiedContainer().getProject(); } return null; } }