package org.craftyourmod.mineclipse.installer.pages; import java.io.FileOutputStream; import java.io.IOException; import java.net.CookieHandler; import java.net.CookieManager; import java.net.HttpCookie; import java.net.MalformedURLException; import java.net.URI; import java.net.URISyntaxException; import java.net.URL; import java.nio.channels.Channels; import java.nio.channels.ReadableByteChannel; import org.craftyourmod.mineclipse.installer.Installer; import org.craftyourmod.mineclipse.installer.Installer.GreyButtonRenderer; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.ScrolledComposite; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.custom.StackLayout; import org.eclipse.swt.layout.FillLayout; import org.eclipse.wb.swt.SWTResourceManager; import org.mihalis.opal.obutton.OButton; import com.richclientgui.toolbox.progressIndicator.ImageSequencer; import com.richclientgui.toolbox.samples.images.SampleToolBoxImageRegistry; import org.eclipse.swt.graphics.Image; import static com.richclientgui.toolbox.samples.images.SampleToolBoxImageRegistry.getImage; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; public class InstallPage extends Composite { private Label lblJDK; private Installer installer; private Label icon_JDK; private ImageSequencer isJDK; private StackLayout sl_composite_4; private Composite composite_4; /** * Create the composite. * * @param parent * @param style */ public InstallPage(Composite parent, int style, Installer instance) { super(parent, style); this.installer = instance; setLayout(new GridLayout(1, false)); Label lblNowSetupWizard = new Label(this, SWT.NONE); lblNowSetupWizard.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); lblNowSetupWizard .setText("Now Setup Wizard will install necessary files"); ScrolledComposite scrolledComposite = new ScrolledComposite(this, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL); scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); scrolledComposite.setExpandHorizontal(true); scrolledComposite.setExpandVertical(true); Composite composite = new Composite(scrolledComposite, SWT.NONE); composite.setBackground(SWTResourceManager.getColor(51, 51, 51)); composite.setBackgroundMode(SWT.INHERIT_FORCE); composite.setLayout(new FillLayout(SWT.VERTICAL)); Composite composite_1 = new Composite(composite, SWT.NONE); composite_1.setLayout(new GridLayout(2, false)); composite_4 = new Composite(composite_1, SWT.NONE); sl_composite_4 = new StackLayout(); sl_composite_4.marginWidth = 4; sl_composite_4.marginHeight = 4; composite_4.setLayout(sl_composite_4); GridData gd_composite_4 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 2); gd_composite_4.widthHint = 40; gd_composite_4.heightHint = 40; composite_4.setLayoutData(gd_composite_4); icon_JDK = new Label(composite_4, SWT.NONE); icon_JDK.setImage(SWTResourceManager.getImage(InstallPage.class, "/icons/remain.gif")); isJDK = new ImageSequencer( composite_4, SWT.NONE, new Image[] { getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_1), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_2), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_3), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_4), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_5), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_6), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_7), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_8), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_9), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_10), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_11), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_12) }, 75, true); sl_composite_4.topControl = icon_JDK; Label lblJdkInstallation = new Label(composite_1, SWT.NONE); lblJdkInstallation.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); lblJdkInstallation.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD)); lblJdkInstallation.setText("JDK Installation"); lblJDK = new Label(composite_1, SWT.NONE); lblJDK.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); lblJDK.setText("Waiting..."); Composite composite_2 = new Composite(composite, SWT.NONE); composite_2.setLayout(new GridLayout(2, false)); Composite composite_3 = new Composite(composite_2, SWT.NONE); GridData gd_composite_3 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 2); gd_composite_3.heightHint = 40; gd_composite_3.widthHint = 40; composite_3.setLayoutData(gd_composite_3); composite_3.setLayout(new GridLayout(1, false)); Label icon_Eclipse = new Label(composite_3, SWT.NONE); icon_Eclipse.setImage(SWTResourceManager.getImage(InstallPage.class, "/icons/remain.gif")); ImageSequencer imageSequencerEclipse = new ImageSequencer( composite_4, SWT.NONE, new Image[] { getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_1), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_2), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_3), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_4), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_5), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_6), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_7), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_8), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_9), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_10), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_11), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_12) }, 75, true); Label lblEclipseInstallation = new Label(composite_2, SWT.NONE); lblEclipseInstallation.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); lblEclipseInstallation.setFont(SWTResourceManager.getFont("Segoe UI", 9, SWT.BOLD)); lblEclipseInstallation.setText("Eclipse Installation"); Label lblEclipse = new Label(composite_2, SWT.NONE); lblEclipse.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); lblEclipse.setText("Waiting..."); Composite composite_5 = new Composite(composite, SWT.NONE); composite_5.setLayout(new GridLayout(2, false)); Composite composite_6 = new Composite(composite_5, SWT.NONE); GridData gd_composite_6 = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 2); gd_composite_6.heightHint = 40; composite_6.setLayoutData(gd_composite_6); composite_6.setLayout(new GridLayout(1, false)); Label icon_MC = new Label(composite_6, SWT.NONE); icon_MC.setImage(SWTResourceManager.getImage(InstallPage.class, "/icons/remain.gif")); ImageSequencer imageSequencerMC = new ImageSequencer( composite_4, SWT.NONE, new Image[] { getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_1), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_2), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_3), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_4), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_5), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_6), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_7), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_8), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_9), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_10), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_11), getImage(SampleToolBoxImageRegistry.IMG_INDICATOR_D_12) }, 75, true); Label lblMineclipseInstallation = new Label(composite_5, SWT.NONE); lblMineclipseInstallation.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); lblMineclipseInstallation.setText("MineClipse Installation"); lblMineclipseInstallation.setFont(SWTResourceManager.getFont( "Segoe UI", 9, SWT.BOLD)); Label labelMineClipse = new Label(composite_5, SWT.NONE); labelMineClipse.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); labelMineClipse.setText("Waiting..."); scrolledComposite.setContent(composite); scrolledComposite.setMinSize(composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); OButton button = new OButton(this, SWT.NONE); button.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { installer.setNextEnabled(false); if(!installJDK().isOK()) return; installer.setNextEnabled(true); } }); button.setText("Run Now"); button.setButtonRenderer(Installer.GreyButtonRenderer.getInstance()); } private void updateJDKText(final String text) { getDisplay().asyncExec(new Runnable() { public void run() { lblJDK.setText(text); } }); } private IStatus installJDK() { if(Boolean.parseBoolean(installer.config.get("JDKInstalled"))){ icon_JDK.setImage(SWTResourceManager.getImage(InstallPage.class, "/icons/no.gif")); updateJDKText("JDK is already installed"); return Status.OK_STATUS; } showJDKPI(); String sUrl = ""; String arch = installer.config.get("OSArch"); CookieManager cm = new CookieManager(); try { cm.getCookieStore().add(new URI("http://oracle.com"), new HttpCookie("gpw_e24", "")); } catch (URISyntaxException e) { e.printStackTrace(); return new Status(Status.ERROR, null, "Canno't add cookie", e); } if(arch.equals("x86")) {; sUrl ="http://download.oracle.com/otn-pub/java/jdk/7u25-b17/jdk-7u25-windows-i586.exe"; CookieHandler.setDefault(cm); try { URL url = new URL(sUrl); ReadableByteChannel rbc = Channels.newChannel(url.openStream()); FileOutputStream fos = new FileOutputStream("C:/Users/fran�ois/Documents/Invit�/test.tmp"); updateJDKText("Downloading "+url.getContent()); fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); fos.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } System.out.println("Done"); return Status.OK_STATUS; } private void showJDKPI() { sl_composite_4.topControl = isJDK; composite_4.layout(); isJDK.startSequence(); } @Override protected void checkSubclass() { // Disable the check that prevents subclassing of SWT components } }