public void createPartControl()

in PluginsAndFeatures/azure-toolkit-for-eclipse/com.microsoft.azuretools.hdinsight/src/com/microsoft/azuretools/hdinsight/SparkSubmissionToolWindowView.java [60:176]


    public void createPartControl(Composite parent) {
        GridLayout layout = new GridLayout();
        layout.numColumns = 2;
        parent.setLayout(layout);

        Composite composite = new Composite(parent, SWT.NONE);
        layout = new GridLayout();
        composite.setLayout(layout);
        GridData gridData = new GridData();
        gridData.verticalAlignment = SWT.TOP;
        composite.setLayoutData(gridData);
        stopButton = new Button(composite, SWT.PUSH);
        stopButton.setText("Stop");
        stopButton.setToolTipText("Stop execution of current application");
        stopButton.setImage(Activator.getImageDescriptor(CommonConst.StopIconPath).createImage());
        stopButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent evt) {
                DefaultLoader.getIdeHelper().executeOnPooledThread(new Runnable() {
                    @Override
                    public void run() {
                        if (!StringHelper.isNullOrWhiteSpace(connectionUrl)) {
                            AppInsightsClient.create(Messages.SparkSubmissionStopButtionClickEvent, null);
                            EventUtil.logEvent(EventType.info, HDINSIGHT, Messages.SparkSubmissionStopButtionClickEvent, null);
                            try {
                                HttpResponse deleteResponse = SparkBatchSubmission.getInstance().killBatchJob(connectionUrl + "/livy/batches", batchId);
                                if (deleteResponse.getCode() == 201 || deleteResponse.getCode() == 200) {
                                    jobStatusManager.setJobKilled();
                                    setInfo("========================Stop application successfully=======================");
                                } else {
                                    setError(String.format("Error : Failed to stop spark application. error code : %d, reason :  %s.", deleteResponse.getCode(), deleteResponse.getContent()));
                                }
                            } catch (IOException exception) {
                                setError("Error : Failed to stop spark application. exception : " + exception.toString());
                            }
                        }
                    }
                });
            }
        });
        stopButton.getAccessible().addAccessibleListener(new AccessibleAdapter() {
            public void getName(AccessibleEvent e)  {
                super.getName(e);
                e.result = stopButton.getToolTipText();
            }
        });

        openSparkUIButton = new Button(composite, SWT.PUSH);
        openSparkUIButton.setText("Open Spark UI");
        openSparkUIButton.setToolTipText("Open Spark UI");
        openSparkUIButton.setImage(Activator.getImageDescriptor(CommonConst.OpenSparkUIIconPath).createImage());
        openSparkUIButton.addSelectionListener(new SelectionAdapter() {
            @Override
            public void widgetSelected(SelectionEvent arg0) {
                try {
                    if (jobStatusManager.isApplicationGenerated()) {
                        String sparkApplicationUrl = String.format(yarnRunningUIUrlFormat, connectionUrl, jobStatusManager.getApplicationId());
                        PlatformUI.getWorkbench().getBrowserSupport().getExternalBrowser().openURL(new URL(sparkApplicationUrl));
                    }
                } catch (Exception browseException) {
                    DefaultLoader.getUIHelper().showError("Failed to browse spark application yarn url", "Spark Submission");
                }
            }
        });
        openSparkUIButton.getAccessible().addAccessibleListener(new AccessibleAdapter() {
            public void getName(AccessibleEvent e)  {
                super.getName(e);
                e.result = openSparkUIButton.getToolTipText();
            }
        });

        gridData = new GridData();
        gridData.horizontalAlignment = SWT.FILL;
        gridData.verticalAlignment = SWT.FILL;
        gridData.grabExcessVerticalSpace = true;
        gridData.grabExcessHorizontalSpace = true;
        outputPanel = new Browser(parent, SWT.BORDER);
        outputPanel.setLayoutData(gridData);

        PropertyChangeListener propertyChangeListener = new PropertyChangeListener() {
            @Override
            public void propertyChange(final PropertyChangeEvent evt) {
//                if (ApplicationManager.getApplication().isDispatchThread()) {
                    changeSupportHandler(evt);

////                } else {
//                    try {
//                        SwingUtilities.invokeAndWait(new Runnable() {
//                                                         @Override
//                                                         public void run() {
//                                                             changeSupportHandler(evt);
//                                                         }
//                                                     }
//                        );
//                    } catch (InterruptedException e) {
//                        e.printStackTrace();
//                    } catch (InvocationTargetException e) {
//                        e.printStackTrace();
//                    }
//                }
            }

            private void changeSupportHandler(PropertyChangeEvent evt) {
                if (evt.getPropertyName().equals("toolWindowText")) {
                    outputPanel.setText(evt.getNewValue().toString());
                } else if (evt.getPropertyName().equals("isStopButtonEnable")) {
                    stopButton.setEnabled(Boolean.parseBoolean(evt.getNewValue().toString()));
                } else if (evt.getPropertyName().equals("isBrowserButtonEnable")) {
                    openSparkUIButton.setEnabled(Boolean.parseBoolean(evt.getNewValue().toString()));
                }
            }
        };

//        outputPanel.addPropertyChangeListener(propertyChangeListener);
        changeSupport = new PropertyChangeSupport(outputPanel);
        changeSupport.addPropertyChangeListener(propertyChangeListener);
    }