package io.sloeber.ui; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.wizard.IWizardContainer; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IImportWizard; import org.eclipse.ui.IWorkbench; import io.sloeber.ui.listeners.ProjectExplorerListener; /** * Import_Arduino_Libraries class is the class linked to the GUI related to the * Arduino library import. It creates one page. There is an important processing * when opened and on the perform finish. This import wizard uses 3 folders to * import: The arduino library folder Your 3rd party library folder and the * Arduino library folder of your hardware * * @author Jan Baeyens * @see performFinish * */ public class ImportLibraries implements IImportWizard { private Import_Libraries_Page mProjectSelectionPage; private IWizardPage[] mPages; private IWizardContainer mWizardContainer = null; private static String mPageName = Messages.ui_select; private static String mPageTitle = Messages.ui_select_Arduino_libraries; @Override public void init(IWorkbench arg0, IStructuredSelection selection) { // Entry point is here when right-click project and import -- as opposed // to AddLibraryAction.execute() when done via Arduino menu } @Override public void addPages() { // Always create the pages like this at the last minute IProject theProject = null; IProject SelectedProjects[] = ProjectExplorerListener.getSelectedProjects(); if (SelectedProjects.length > 0) { theProject = SelectedProjects[0]; this.mProjectSelectionPage = new Import_Libraries_Page(theProject, mPageName, StructuredSelection.EMPTY); this.mProjectSelectionPage.setWizard(this); this.mPages = new IWizardPage[1]; this.mPages[0] = this.mProjectSelectionPage; } else { Activator.log(new Status(IStatus.ERROR, Activator.getId(), Messages.Handler_No_project_found)); } } @Override public boolean canFinish() { return true; } @Override public void createPageControls(Composite pageContainer) {// no code needed } @Override public void dispose() {// no code needed } @Override public IWizardContainer getContainer() { return this.mWizardContainer; } @Override public Image getDefaultPageImage() { return null; } @Override public IDialogSettings getDialogSettings() { return null; } @Override public IWizardPage getNextPage(IWizardPage arg0) { for (int i = 0; i < (this.mPages.length - 1); i++) { if (arg0 == this.mPages[i]) { return this.mPages[i + 1]; } } return null; } @Override public IWizardPage getPage(String pageName) { for (int i = 0; i < this.mPages.length; i++) { if (pageName == this.mPages[i].getName()) return this.mPages[i]; } return null; } @Override public int getPageCount() { return this.mPages.length; } @Override public IWizardPage[] getPages() { return this.mPages; } @Override public IWizardPage getPreviousPage(IWizardPage arg0) { for (int i = 1; i < this.mPages.length; i++) { if (arg0 == this.mPages[i]) return this.mPages[i - 1]; } return null; } @Override public IWizardPage getStartingPage() { return this.mPages[0]; } @Override public RGB getTitleBarColor() { return null; } @Override public String getWindowTitle() { return mPageTitle; } @Override public boolean isHelpAvailable() { return false; } @Override public boolean needsPreviousAndNextButtons() { return false; } @Override public boolean needsProgressMonitor() { return false; } @Override public boolean performCancel() { return true; } @Override public boolean performFinish() { return this.mProjectSelectionPage.PerformFinish(); } @Override public void setContainer(IWizardContainer wizardContainer) { this.mWizardContainer = wizardContainer; } }