/******************************************************************************* * Copyright (c) 2016 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ package org.eclipse.cdt.arduino.ui.internal.downloads; import java.io.File; import java.io.IOException; import org.eclipse.cdt.arduino.core.internal.ArduinoPreferences; import org.eclipse.cdt.arduino.ui.internal.Activator; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.wizard.Wizard; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.CTabFolder; import org.eclipse.swt.custom.CTabItem; import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Shell; public class ArduinoDownloadsManager extends WizardDialog { public ArduinoDownloadsManager() { super(null, new Wizard() { { setNeedsProgressMonitor(true); } @Override public void addPages() { addPage(new WizardPage(ArduinoDownloadsManager.class.getName()) { { setTitle("Arduino Download Manager"); setDescription("Manage installed Platforms and Libraries."); } @Override public void createControl(Composite parent) { final CTabFolder tabFolder = new CTabFolder(parent, SWT.BORDER); tabFolder.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { tabFolder.getSelection().getControl().setFocus(); } }); tabFolder.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { tabFolder.getSelection().getControl().setFocus(); } }); CTabItem platformsTab = new CTabItem(tabFolder, SWT.NONE); platformsTab.setText("Platforms"); platformsTab.setImage(Activator.getDefault().getImageRegistry().get(Activator.IMG_ARDUINO)); PlatformsTabControl platformsControl = new PlatformsTabControl(tabFolder, SWT.NONE); platformsControl.setContainer(getContainer()); platformsTab.setControl(platformsControl); CTabItem librariesTab = new CTabItem(tabFolder, SWT.NONE); librariesTab.setText("Libraries"); librariesTab.setImage(Activator.getDefault().getImageRegistry().get(Activator.IMG_ARDUINO)); LibrariesTabControl librariesControl = new LibrariesTabControl(tabFolder, SWT.NONE); librariesControl.setContainer(getContainer()); librariesTab.setControl(librariesControl); applyDialogFont(tabFolder); setControl(tabFolder); } }); } @Override public boolean performFinish() { return true; } }); } @Override protected void createButtonsForButtonBar(Composite parent) { super.createButtonsForButtonBar(parent); getButton(IDialogConstants.CANCEL_ID).setVisible(false); Button finishButton = getButton(IDialogConstants.FINISH_ID); finishButton.setText("Done"); // make sure it's far right finishButton.moveBelow(null); } static boolean checkLicense(Shell shell) { File acceptedFile = ArduinoPreferences.getArduinoHome().resolve(".accepted").toFile(); //$NON-NLS-1$ if (!acceptedFile.exists()) { String message = "Do you accept the licenses for the platforms and libraries you are downloading?"; MessageDialog dialog = new MessageDialog(shell, "Arduino Licensing", null, message, MessageDialog.QUESTION, new String[] { "Yes", "No" }, 0); int rc = dialog.open(); if (rc == 0) { try { acceptedFile.createNewFile(); } catch (IOException e) { Activator.log(e); } return true; } else { return false; } } else { return true; } } }