com.apicloud.updatemanager.dialog.CheckLoaderDialog.java Source code

Java tutorial

Introduction

Here is the source code for com.apicloud.updatemanager.dialog.CheckLoaderDialog.java

Source

/**
 * APICloud Studio
 * Copyright (c) 2014-2015 by APICloud, Inc. All Rights Reserved.
 * Licensed under the terms of the GNU Public License (GPL) v3.
 * Please see the license.html included with this distribution for details.
 * Any modifications to this file must keep this entire header intact.
 */

package com.apicloud.updatemanager.dialog;

import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.jobs.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.JobChangeAdapter;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IPersistableElement;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.ide.IDE;

import com.apicloud.updatemanager.Activator;
import com.apicloud.updatemanager.Messages;
import com.apicloud.updatemanager.core.CustomLoaderAction;
import com.apicloud.updatemanager.core.DownLoadJob;

public class CheckLoaderDialog extends Dialog {
    private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
    private Cursor cursor;
    public static IEditorInput input;
    private final int LEFT_LABEL = 0;
    private Label leftLabel, rightLabel;
    private int id;
    private static final String aboutText = Messages.LOADMISSINFO;
    private IStructuredSelection select;
    private Object obj;

    public CheckLoaderDialog(Shell parentShell, int iloader, IStructuredSelection select) {
        super(parentShell);
        setShellStyle(SWT.DIALOG_TRIM | SWT.MIN | SWT.MAX);
        this.select = select;
    }

    public CheckLoaderDialog(Shell parentShell, int iloader, Object obj) {
        super(parentShell);
        setShellStyle(SWT.DIALOG_TRIM | SWT.MIN | SWT.MAX);
        this.obj = obj;
    }

    protected void configureShell(Shell newShell) {
        super.configureShell(newShell);
        newShell.setText(Messages.LOADEMISSERROR);
        newShell.setImage(com.apicloud.resource.Activator.getImage("icons/r1.png"));
    }

    private Color getBackgroundColor() {
        return Display.getCurrent().getActiveShell().getBackground();
    }

    @Override
    protected int getShellStyle() {
        return SWT.MIN | SWT.CLOSE;
    }

    @Override
    protected Control createDialogArea(Composite parent) {
        Color color = getBackgroundColor();

        Composite composite = new Composite(parent, SWT.NONE);
        composite.setBackground(color);
        composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        Display display = PlatformUI.getWorkbench().getDisplay();
        cursor = new Cursor(display, SWT.CURSOR_HAND);

        Label warnLabel = formToolkit.createLabel(composite, "");
        warnLabel.setBounds(20, 35, 70, 70);

        warnLabel.setImage(com.apicloud.resource.Activator.getImage("icons/5.png"));
        warnLabel.setBackground(color);

        Label topLabel = formToolkit.createLabel(composite, aboutText, SWT.WRAP);
        topLabel.setBounds(100, 50, 350, 60);
        topLabel.setFont(new Font(display, "", 12, SWT.NORMAL));// ????
        topLabel.setBackground(color);

        leftLabel = formToolkit.createLabel(composite, "\u4e0b\u8f7d\u5b98\u65b9" + "Loader", SWT.PUSH);

        leftLabel.setCursor(cursor);
        leftLabel.setBounds(140, 160, 102, 21);
        leftLabel.setAlignment(SWT.CENTER);
        leftLabel.setBackgroundImage(com.apicloud.resource.Activator.getImage("icons/2.png"));

        leftLabel.addMouseListener(new MouseAdapter() {
            /**
             * user to download baseloader
             */
            @Override
            public void mouseUp(MouseEvent e) {

                downloadBaseloader(Display.getDefault().getActiveShell(), getId());
                close();

            }
        });

        rightLabel = formToolkit.createLabel(composite, "\u81ea\u5b9a\u4e49" + "Loader");

        rightLabel.setCursor(cursor);
        rightLabel.setBounds(260, 160, 102, 21);
        rightLabel.setAlignment(SWT.CENTER);
        rightLabel.setBackgroundImage(com.apicloud.resource.Activator.getImage("icons/1.png"));
        rightLabel.addMouseListener(new MouseAdapter() {
            /**
             * user turn to custormerloader
             */
            @Override
            public void mouseUp(MouseEvent e) {
                CustomLoaderAction action = null;
                if (select != null) {
                    action = new CustomLoaderAction(select);

                } else if (obj != null) {
                    action = new CustomLoaderAction(obj);
                }
                action.run(null);
                close();
            }
        });
        return composite;
    }

    public void changeImage(int labelId) {
        if (labelId == LEFT_LABEL) {

            leftLabel.setBackgroundImage(com.apicloud.resource.Activator.getImage("icons/1.png"));
            rightLabel.setBackgroundImage(com.apicloud.resource.Activator.getImage("icons/2.png"));
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } else {
            leftLabel.setImage(com.apicloud.resource.Activator.getImage("icons/2.png"));
            rightLabel.setImage(com.apicloud.resource.Activator.getImage("icons/1.png"));
        }
    }

    public IEditorInput getInput() {
        if (input == null) {
            input = new IEditorInput() {
                public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) {
                    return null;
                }

                public String getToolTipText() {
                    return "custom app loader";
                }

                public IPersistableElement getPersistable() {
                    return null;
                }

                public String getName() {
                    return "apploader";
                }

                public ImageDescriptor getImageDescriptor() {
                    return null;
                }

                public boolean exists() {
                    return true;
                }
            };
        }
        return input;
    }

    /**
     * custom button name
     */
    protected void createButtonsForButtonBar(Composite parent) {
    }

    protected void buttonPressed(int buttonId) {
    }

    public void downloadBaseloader(final Shell shell, int id) {
        try {
            DownLoadJob downloadjob = new DownLoadJob(Messages.DOWNLOADOFFICIALLOADER, id);
            downloadjob.setUser(true);
            downloadjob.schedule();

            downloadjob.addJobChangeListener(new JobChangeAdapter() {
                public void done(IJobChangeEvent event) {
                    if (event.getResult().isOK())
                        Display.getDefault().syncExec(new Runnable() {
                            public void run() {
                                MessageDialog.openInformation(null, Messages.DOWNLOADSUCCESS,
                                        Messages.LOADERDOWNLOADSUCC);
                            }
                        });
                    else
                        Display.getDefault().syncExec(new Runnable() {
                            public void run() {
                                MessageDialog.openError(null, Messages.DOWNLOADEXCEPTION, Messages.DOWNLOADERROR);
                            }
                        });
                    close();
                }
            });

            ResourcesPlugin.getWorkspace().build(IncrementalProjectBuilder.CLEAN_BUILD, null);
            ResourcesPlugin.getWorkspace().getRoot().refreshLocal(IResource.DEPTH_INFINITE, null);
            com.apicloud.loader.platforms.android.ADBActivator.setHasBaseLoader(true);
            com.apicloud.loader.platforms.android.ADBActivator.setHasAppLoader(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void openEditor() {
        IWorkbenchPage workbenchPage = Activator.getDefault().getWorkbench().getActiveWorkbenchWindow()
                .getActivePage();
        try {
            IDE.openEditor(workbenchPage, getInput(), "com.apicloud.customapploader");
        } catch (PartInitException e1) {
            e1.printStackTrace();
        }
    }

    @Override
    protected void cancelPressed() {
        super.cancelPressed();
        close();
    }

    @Override
    public boolean close() {
        if (cursor != null) {
            cursor.dispose();
        }
        return super.close();
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}