Example usage for com.intellij.openapi.ui Messages getQuestionIcon

List of usage examples for com.intellij.openapi.ui Messages getQuestionIcon

Introduction

In this page you can find the example usage for com.intellij.openapi.ui Messages getQuestionIcon.

Prototype

@NotNull
    public static Icon getQuestionIcon() 

Source Link

Usage

From source file:com.microsoft.intellij.ui.libraries.ApplicationInsightsPanel.java

License:Open Source License

private void handleWebXML() throws Exception {
    String xmlPath = String.format("%s%s%s", PluginUtil.getModulePath(module), File.separator, webxmlPath);
    if (new File(xmlPath).exists()) {
        handler.parseWebXmlPath(xmlPath);
        handler.setAIFilterConfig();/*ww  w .  j ava  2s .  co  m*/
    } else { // create web.xml
        int choice = Messages.showYesNoDialog(message("depDescMsg"), message("depDescTtl"),
                Messages.getQuestionIcon());
        if (choice == Messages.YES) {
            String path = createFileIfNotExists(message("depFileName"), message("depDirLoc"),
                    message("aiWebXmlResFileLoc"));
            handler.parseWebXmlPath(path);
        } else {
            throw new Exception(": Application Insights cannot be configured without creating web.xml ");
        }
    }
}

From source file:com.microsoft.intellij.ui.libraries.LibraryPropertiesPanel.java

License:Open Source License

private ActionListener createRequiredHttpsCheckListener() {
    return new ActionListener() {
        @Override//  w  w w  . j av a2s.c  o m
        public void actionPerformed(ActionEvent e) {
            if (requiresHttpsCheck.isSelected()) {
                //Do nothing
            } else {
                int choice = Messages.showYesNoDialog(message("requiresHttpsDlgMsg"),
                        message("requiresHttpsDlgTitle"), Messages.getQuestionIcon());
                if (choice == Messages.NO) {
                    requiresHttpsCheck.setSelected(true);
                }
            }
        }
    };
}

From source file:com.microsoft.intellij.ui.libraries.LibraryPropertiesPanel.java

License:Open Source License

/**
 * Method adds ACS filter and filter mapping tags in web.xml
 * and saves input values given on ACS library page.
 * In case of edit, populates previously set values.
 *//*from   ww w  .j  a v a 2  s. c  o m*/
private void configureDeployment() {
    ACSFilterHandler handler = null;
    try {
        String xmlPath = String.format("%s%s%s", PluginUtil.getModulePath(module), File.separator,
                message("xmlPath"));
        File webXml = new File(xmlPath);
        if (webXml.exists()) {
            handler = new ACSFilterHandler(xmlPath);
            handler.setAcsFilterParams(message("acsAttr"), acsTxt.getText());
            handler.setAcsFilterParams(message("relAttr"), relTxt.getText());
            if (!embedCertCheck.isSelected()) {
                handler.setAcsFilterParams(message("certAttr"), certTxt.getText());
                if (getEmbeddedCertInfo() != null)
                    removeEmbedCert();
            } else {
                handler.removeParamsIfExists(message("certAttr"));
                if (!certTxt.getText().isEmpty()) {
                    String webinfLoc = String.format("%s%s%s", PluginUtil.getModulePath(module), File.separator,
                            message("depDirLoc"));
                    String certLoc = String.format("%s%s%s", webinfLoc, File.separator, message("acsCertLoc"));
                    File destination = new File(certLoc);
                    if (!destination.getParentFile().exists())
                        destination.getParentFile().mkdir();
                    copy(new File(CerPfxUtil.getCertificatePath(certTxt.getText())), destination);
                }
            }
            handler.setAcsFilterParams(message("secretKeyAttr"), generateKey());
            handler.setAcsFilterParams(message("allowHTTPAttr"),
                    requiresHttpsCheck.isSelected() ? "false" : "true");
        } else {
            int choice = Messages.showYesNoDialog(message("depDescMsg"), message("depDescTtl"),
                    Messages.getQuestionIcon());
            if (choice == Messages.YES) {
                String path = createWebXml();
                //copy cert into WEB-INF/cert/_acs_signing.cer location if embed cert is selected
                if (embedCertCheck.isSelected()) {
                    String webinfLoc = String.format("%s%s%s", PluginUtil.getModulePath(module), File.separator,
                            message("depDirLoc"));
                    String certLoc = String.format("%s%s%s", webinfLoc, File.separator, message("acsCertLoc"));
                    File destination = new File(certLoc);
                    if (!destination.getParentFile().exists())
                        destination.getParentFile().mkdir();
                    copy(new File(CerPfxUtil.getCertificatePath(certTxt.getText())), destination);
                }
                handler = new ACSFilterHandler(path);
                handler.setAcsFilterParams(message("acsAttr"), acsTxt.getText());
                handler.setAcsFilterParams(message("relAttr"), relTxt.getText());
                if (!embedCertCheck.isSelected()) { //Do not make entry if embed cert is selected
                    handler.setAcsFilterParams(message("certAttr"), certTxt.getText());
                    if (getEmbeddedCertInfo() != null)
                        removeEmbedCert();
                }
                handler.setAcsFilterParams(message("secretKeyAttr"), generateKey());
                handler.setAcsFilterParams(message("allowHTTPAttr"),
                        requiresHttpsCheck.isSelected() ? "false" : "true");
            } else {
                return;
            }
        }
    } catch (Exception e) {
        PluginUtil.displayErrorDialogAndLog(message("acsErrTtl"), message("acsErrMsg"), e);
    }
    try {
        handler.save();
    } catch (Exception e) {
        PluginUtil.displayErrorDialogAndLog(message("acsErrTtl"), message("saveErrMsg"), e);
    }
}

From source file:com.microsoft.intellij.ui.RolesPanel.java

License:Open Source License

private ActionListener createBtnRemoveListener() {
    return new ActionListener() {
        @Override/*from w w  w.j av a 2s  . c om*/
        public void actionPerformed(ActionEvent e) {
            try {
                int selIndex = tblRoles.getSelectedRow();
                if (selIndex > -1) {
                    int choice = Messages.showYesNoDialog(myModule.getProject(), message("rolsDelMsg"),
                            message("rolsDelTitle"), Messages.getQuestionIcon());
                    if (choice == Messages.YES) {
                        /*
                         * If the role selected for deletion is the last role,
                        * then do not delete it and give error message.
                        */
                        if (listRoles.size() == 1) {
                            PluginUtil.displayErrorDialog(message("rolsDelTitle"), message("lastRolDelMsg"));
                        } else {
                            WindowsAzureRole windowsAzureRole = listRoles.get(selIndex);
                            windowsAzureRole.delete();
                            waProjManager.save();
                            ((RolesTableModel) tblRoles.getModel()).fireTableDataChanged();
                        }
                    }
                }
            } catch (WindowsAzureInvalidProjectOperationException ex) {
                PluginUtil.displayErrorDialogAndLog(message("rolsErr"),
                        message("adRolErrMsgBox1") + message("adRolErrMsgBox2"), ex);
            }
        }
    };
}

From source file:com.microsoft.intellij.ui.StorageAccountPanel.java

License:Open Source License

private ActionListener createRemoveButtonListener() {
    return new ActionListener() {
        @Override/*from ww  w .  ja v  a 2s .  com*/
        public void actionPerformed(ActionEvent e) {
            int curSelIndex = accountsTable.getSelectedRow();
            if (curSelIndex > -1) {
                int choice = Messages.showOkCancelDialog(message("accRmvMsg"), message("accRmvTtl"),
                        Messages.getQuestionIcon());
                if (choice == Messages.OK) {
                    StorageAccountRegistry.getStrgList().remove(curSelIndex);
                    AzureSettings.getSafeInstance(myProject).saveStorage();
                    ((StorageAccountTableModel) accountsTable.getModel()).setAccounts(getTableContent());
                    ((StorageAccountTableModel) accountsTable.getModel()).fireTableDataChanged();
                }
            }
        }
    };
}

From source file:com.microsoft.intellij.ui.WARemoteAccessPanel.java

License:Open Source License

public boolean doOKAction() {
    try {//from   w ww. j  a v  a 2  s.c o  m
        loadProject();
        if (remoteChkBtn.isSelected()) {
            waProjManager.setRemoteAccessAllRoles(true);
            String userName = txtUserName.getText();
            String pwd = txtPassword.getText();
            String cnfPwd = txtConfirmPwd.getText();
            String newPath = txtPath.getText();
            Date expDate = txtExpiryDate.getDate();
            String tempPath = newPath;
            boolean isPathChanged = false;
            waProjManager.setRemoteAccessUsername(userName);
            if (!newPath.equals(waProjManager.getRemoteAccessCertificatePath()) && !newPath.isEmpty()) {
                isPathChanged = true;
                /*
                 * check If certificate file path has changed,
                 * If yes then prompt user
                 * for changing the password as well,
                 * if that is not changed.
                 * Because we have to encrypt the new password
                 * and then we will generate certificate
                 * based on that.
                 * Case 1 :- If user has changed the path
                 * and password is old then it
                 * will prompt for new password or re-enter the password.
                 * If user changes the password
                 * then it will generate certificate based
                 * on that new password.
                 * Case 2 :- If user set the blank password
                 * even after displaying that
                 * password change prompt, in that case
                 * we will display warning messages
                 * to user that whether he want to continue
                 * with empty password, If yes
                 * then we will consider that blank password
                 * else use will have to enter
                 * new password.
                 */
                if (pwd.equals(waProjManager.getRemoteAccessEncryptedPassword()) && !pwd.isEmpty()) {
                    txtPassword.setText("");
                    txtConfirmPwd.setText("");
                    PluginUtil.displayErrorDialog(message("remAccErTxtTitle"), message("remAccPwdMstChng"));
                    return false;
                }
            }
            if (pwd.isEmpty()) {
                int choice = Messages.showOkCancelDialog(message("remAccErTxtTitle"), message("remAccWarnPwd"),
                        Messages.getQuestionIcon());
                if (!(choice == Messages.OK)) {
                    return false;
                }
            }
            if (expDate == null) {
                PluginUtil.displayErrorDialog(message("remAccErTxtTitle"), message("remAccExpDateNull"));
                return false;
            } else {
                boolean status = validateExpDate(expDate);
                if (!status) {
                    return false;
                }
            }
            if (newPath.equalsIgnoreCase("")) {
                PluginUtil.displayErrorDialog(message("remAccErTxtTitle"), message("remAccPathNull"));
                return false;
            }
            /*
             * Check for displaying the relative path
             * in case when user select the certificate file path
             * as workspace or of current project.
             * We will be showing relative path in that case on UI.
             */
            if (tempPath.startsWith(BASE_PATH)) {
                tempPath = tempPath.substring(tempPath.indexOf("}") + 1, tempPath.length());
                tempPath = String.format("%s%s", PluginUtil.getModulePath(myModule), tempPath);
            }
            File file = new File(tempPath);
            //if path is not correct.display error message for that.
            if (file.exists() && tempPath.endsWith(".cer")) {
                waProjManager.setRemoteAccessCertificatePath(newPath);
            } else {
                PluginUtil.displayErrorDialog(message("remAccErTxtTitle"), message("remAccInvldPath"));
                return false;
            }
            try {
                if (isPathChanged) {
                    String thumbprint = CerPfxUtil.getThumbPrint(tempPath);
                    if (waProjManager.isRemoteAccessTryingToUseSSLCert(thumbprint)) {
                        PluginUtil.displayErrorDialog(message("remAccSyntaxErr"), message("usedBySSL"));
                        return false;
                    } else {
                        waProjManager.setRemoteAccessCertificateFingerprint(thumbprint);
                    }
                }
            } catch (Exception e) {
                PluginUtil.displayErrorDialogAndLog(message("remAccSyntaxErr"), message("remAccErTmbPrint"), e);
                return false;
            }
            if (cnfPwd.equals(pwd)) {
                try {
                    /*
                     * Encrypting the password
                     * if it is not dummy & blank from xml
                     * and isPwdChanged is true that means
                     * user has changes the password.
                     */
                    String modifiedPwd = message("remAccDummyPwd");
                    if (!pwd.equals(modifiedPwd) && !pwd.isEmpty() && isPwdChanged) {
                        String encryptedPwd = EncUtilHelper.encryptPassword(pwd, tempPath,
                                AzurePlugin.pluginFolder);
                        waProjManager.setRemoteAccessEncryptedPassword(encryptedPwd);
                    } else {
                        waProjManager.setRemoteAccessEncryptedPassword(pwd);
                    }
                } catch (Exception e) {
                    PluginUtil.displayErrorDialogAndLog(message("remAccSyntaxErr"), message("remAccErPwd"), e);
                    return false;
                }
            } else {
                PluginUtil.displayErrorDialog(message("remAccErTxtTitle"), message("remAccPwdNotMatch"));
                return false;
            }
        } else {
            waProjManager.setRemoteAccessAllRoles(false);
        }
        waProjManager.save();
    } catch (WindowsAzureInvalidProjectOperationException e) {
        PluginUtil.displayErrorDialogAndLog(message("remAccSyntaxErr"),
                message("proPageErrMsgBox1") + message("proPageErrMsgBox2"), e);
    } catch (ParseException e) {
        PluginUtil.displayErrorDialogAndLog(message("remAccErrTitle"), message("remAccErDateParse"), e);
        return false;
    }
    LocalFileSystem.getInstance().findFileByPath(PluginUtil.getModulePath(myModule)).refresh(true, true);
    isFrmEncLink = false;
    return true;
}

From source file:com.microsoftopentechnologies.intellij.ui.azureroles.AzureRolePanel.java

License:Apache License

/**
 * Method checks if number of instances are equal to 1
 * and caching is enabled as well as high availability
 * feature is on then ask input from user,
 * whether to turn off high availability feature
 * or he wants to edit instances./*from   www .  java2s.com*/
 *
 * @param val
 * @return boolean
 */
private boolean handleHighAvailabilityFeature(boolean val) {
    boolean isBackupSet = false;
    boolean okToProceed = val;
    try {
        /*
        * checks if number of instances are equal to 1
        * and caching is enabled
        */
        if (txtNoOfInstances.getText().trim().equalsIgnoreCase("1")
                && windowsAzureRole.getCacheMemoryPercent() > 0) {
            /*
             * Check high availability feature of any of the cache is on
             */
            Map<String, WindowsAzureNamedCache> mapCache = windowsAzureRole.getNamedCaches();
            for (Iterator<WindowsAzureNamedCache> iterator = mapCache.values().iterator(); iterator
                    .hasNext();) {
                WindowsAzureNamedCache cache = (WindowsAzureNamedCache) iterator.next();
                if (cache.getBackups()) {
                    isBackupSet = true;
                }
            }
            /*
             * High availability feature of any of the cache is on.
             */
            if (isBackupSet) {
                int choice = Messages.showOkCancelDialog(message("highAvailMsg"), message("highAvailTtl"),
                        Messages.getQuestionIcon());
                /*
                * Set High availability feature to No.
                */
                if (choice == Messages.OK) {
                    for (Iterator<WindowsAzureNamedCache> iterator = mapCache.values().iterator(); iterator
                            .hasNext();) {
                        WindowsAzureNamedCache cache = iterator.next();
                        if (cache.getBackups()) {
                            cache.setBackups(false);
                        }
                    }
                    okToProceed = true;
                    waProjManager.save();
                } else {
                    /*
                     * Stay on Role properties page.
                     */
                    okToProceed = false;
                    txtNoOfInstances.requestFocus();
                }
            }
        }
    } catch (WindowsAzureInvalidProjectOperationException e) {
        PluginUtil.displayErrorDialogAndLog(message("cachErrTtl"), message("cachGetErMsg"), e);
        okToProceed = false;
    }
    return okToProceed;
}

From source file:com.microsoftopentechnologies.intellij.ui.azureroles.ComponentsPanel.java

License:Apache License

/**
 * Listener method for remove button which
 * deletes the selected component.//w w  w . j av a2 s.  c  o m
 */
private void removeComponent() {
    WindowsAzureRoleComponent component = tblComponents.getSelectedObject();
    //        IWorkspace workspace = ResourcesPlugin.getWorkspace();
    //        IWorkspaceRoot root = workspace.getRoot();
    //        WindowsAzureRoleComponent component = listComponents.get(selIndex);
    try {
        /* First condition: Checks component is part of a JDK,
        * server configuration
        * Second condition: For not showing error message
        * "Disable Server JDK Configuration"
        * while removing server application
        * when server or JDK  is already disabled.
        */
        if (component.getIsPreconfigured() && (!(component.getType().equals(message("typeSrvApp"))
                && windowsAzureRole.getServerName() == null))) {
            PluginUtil.displayErrorDialog(message("jdkDsblErrTtl"), message("jdkDsblErrMsg"));
        } else {
            int choice = Messages.showYesNoDialog(message("cmpntRmvMsg"), message("cmpntRmvTtl"),
                    Messages.getQuestionIcon());
            if (choice == Messages.YES) {
                String cmpntPath = String.format("%s%s%s%s%s",
                        PluginUtil.getModulePath(ModuleManager.getInstance(project)
                                .findModuleByName(waProjManager.getProjectName())),
                        File.separator, windowsAzureRole.getName(), message("approot"),
                        component.getDeployName());
                File file = new File(cmpntPath);
                // Check import source is equal to approot
                if (component.getImportPath().isEmpty() && file.exists()) {
                    int selected = Messages.showYesNoCancelDialog(message("cmpntSrcRmvMsg"),
                            message("cmpntSrcRmvTtl"), Messages.getQuestionIcon());
                    switch (selected) {
                    case Messages.YES:
                        //yes
                        component.delete();
                        //                                tblViewer.refresh();
                        fileToDel.add(file);
                        break;
                    case Messages.NO:
                        //no
                        component.delete();
                        //                                tblViewer.refresh();
                        break;
                    case Messages.CANCEL:
                        //cancel
                        break;
                    default:
                        break;
                    }
                } else {
                    component.delete();
                    //                        tblViewer.refresh();
                    fileToDel.add(file);
                }
                myModified = true;
            }
        }
        //            if (tblComponents.getItemCount() == 0) {
        //                // table is empty i.e. number of rows = 0
        //                btnRemove.setEnabled(false);
        //                btnEdit.setEnabled(false);
        //            }
    } catch (WindowsAzureInvalidProjectOperationException e) {
        PluginUtil.displayErrorDialogAndLog(message("cmpntSetErrTtl"), message("cmpntRmvErrMsg"), e);
    }
}

From source file:com.microsoftopentechnologies.intellij.ui.azureroles.RoleEndpointsPanel.java

License:Apache License

/**
 * Listener method for remove button which
 * deletes the selected endpoint./*from  ww w  .j  a  v  a  2  s . c o m*/
 */
private void removeEndpoint() {
    WindowsAzureEndpoint waEndpoint = tblEndpoints.getSelectedObject();
    try {
        WindowsAzureEndpoint debugEndpt = windowsAzureRole.getDebuggingEndpoint();
        String dbgEndptName = "";
        if (debugEndpt != null) {
            dbgEndptName = debugEndpt.getName();
        }
        // delete the selected endpoint
        /*
         * Check end point selected for removal
        * is associated with Caching then give error
        * and does not allow to remove.
        */
        if (waEndpoint.isCachingEndPoint()) {
            PluginUtil.displayErrorDialog(message("cachDsblErTtl"), message("endPtRmvErMsg"));
        }
        /*
        * Check end point selected for removal
        * is associated with Debugging.
        */
        else if (waEndpoint.getName().equalsIgnoreCase(dbgEndptName)) {
            StringBuilder msg = new StringBuilder(message("dlgEPDel"));
            msg.append(message("dlgEPDel1"));
            msg.append(message("dlgEPDel2"));
            int choice = Messages.showYesNoDialog(msg.toString(), message("dlgDelEndPt1"),
                    Messages.getQuestionIcon());
            if (choice == Messages.YES) {
                waEndpoint.delete();
                setModified(true);
                windowsAzureRole.setDebuggingEndpoint(null);
            }
        }
        /*
         * Endpoint associated with both SSL
         * and Session affinity
         */
        else if (waEndpoint.isStickySessionEndpoint() && waEndpoint.isSSLEndpoint()) {
            int choice = Messages.showOkCancelDialog(message("bothDelMsg"), message("dlgDelEndPt1"),
                    Messages.getQuestionIcon());
            if (choice == Messages.OK) {
                setModified(true);
                if (waEndpoint.getEndPointType().equals(WindowsAzureEndpointType.Input)) {
                    windowsAzureRole.setSessionAffinityInputEndpoint(null);
                    windowsAzureRole.setSslOffloading(null, null);
                    waEndpoint.delete();
                } else {
                    windowsAzureRole.setSessionAffinityInputEndpoint(null);
                    windowsAzureRole.setSslOffloading(null, null);
                }
            }
        }
        /*
        * Check end point selected for removal
        * is associated with Load balancing
        * i.e (HTTP session affinity).
        */
        else if (waEndpoint.isStickySessionEndpoint()) {
            int choice = Messages.showOkCancelDialog(message("ssnAffDelMsg"), message("dlgDelEndPt1"),
                    Messages.getQuestionIcon());
            if (choice == Messages.OK) {
                setModified(true);
                if (waEndpoint.getEndPointType().equals(WindowsAzureEndpointType.Input)) {
                    windowsAzureRole.setSessionAffinityInputEndpoint(null);
                    waEndpoint.delete();
                } else {
                    windowsAzureRole.setSessionAffinityInputEndpoint(null);
                }
            }
        }
        /*
         * Endpoint associated with SSL
         */
        else if (waEndpoint.isSSLEndpoint()) {
            int choice = Messages.showOkCancelDialog(message("sslDelMsg"), message("dlgDelEndPt1"),
                    Messages.getQuestionIcon());
            if (choice == Messages.OK) {
                setModified(true);
                if (waEndpoint.getEndPointType().equals(WindowsAzureEndpointType.Input)) {
                    windowsAzureRole.setSslOffloading(null, null);
                    waEndpoint.delete();
                } else {
                    windowsAzureRole.setSslOffloading(null, null);
                }
            }
        }
        /*
         * Endpoint associated with SSL redirection.
         */
        else if (waEndpoint.isSSLRedirectEndPoint()) {
            int choice = Messages.showOkCancelDialog(message("sslRedirectDelMsg"), message("dlgDelEndPt1"),
                    Messages.getQuestionIcon());
            if (choice == Messages.OK) {
                windowsAzureRole.deleteSslOffloadingRedirectionEndpoint();
                setModified(true);
            }
        }
        /*
         * Normal end point.
         */
        else {
            int choice = Messages.showOkCancelDialog(message("dlgDelEndPt2"), message("dlgDelEndPt1"),
                    Messages.getQuestionIcon());
            if (choice == Messages.OK) {
                setModified(true);
                waEndpoint.delete();
            }
        }
    } catch (WindowsAzureInvalidProjectOperationException e) {
        PluginUtil.displayErrorDialogAndLog(message("adRolErrMsgBox1") + message("adRolErrMsgBox2"),
                message("adRolErrTitle"), e);
    }
}

From source file:com.microsoftopentechnologies.intellij.ui.azureroles.SSLOffloadingPanel.java

License:Apache License

private WindowsAzureEndpoint findInputEndpt() throws WindowsAzureInvalidProjectOperationException {
    WindowsAzureEndpoint endpt = null;//from   ww  w .ja v a 2  s  .  c o m
    WindowsAzureEndpoint sessionAffEndPt = waRole.getSessionAffinityInputEndpoint();
    // check session affinity is already enabled, then consider same endpoint
    if (sessionAffEndPt != null) {
        // check port of session affinity endpoint
        String stSesPubPort = sessionAffEndPt.getPort();
        if (stSesPubPort.equalsIgnoreCase(String.valueOf(HTTP_PORT))) {
            // check 443 is already available on same role (input enpoint)
            WindowsAzureEndpoint httpsEndPt = WAEclipseHelperMethods.findEndpointWithPubPort(HTTPS_PORT,
                    waRole);
            if (httpsEndPt != null) {
                /*
                 * If HTTPS endpoint with public port 443,
                 * is present on same role then show warning
                 */
                PluginUtil.displayWarningDialog(String.format(message("httpsPresentSt"), httpsEndPt.getName(),
                        httpsEndPt.getPort(), httpsEndPt.getName()), message("sslTtl"));
                endpt = null;
            } else {
                /*
                 * Check if 443 is used on same role (instance endpoint)
                 * or any other role
                 * if yes then consider 8443.
                 */
                int portToUse = HTTPS_PORT;
                if (WAEclipseHelperMethods.findRoleWithEndpntPubPort(HTTPS_PORT, waProjManager) != null) {
                    // need to use 8443
                    int pubPort = HTTPS_NXT_PORT;
                    while (!waProjManager.isValidPort(String.valueOf(pubPort),
                            WindowsAzureEndpointType.Input)) {
                        pubPort++;
                    }
                    portToUse = pubPort;
                }
                int choice = Messages.showYesNoDialog(
                        message("sslhttp").replace("${epName}", sessionAffEndPt.getName())
                                .replace("${pubPort}", String.valueOf(portToUse))
                                .replace("${privPort}", sessionAffEndPt.getPrivatePort()),
                        message("sslTtl"), Messages.getQuestionIcon());
                if (choice == Messages.YES) {
                    sessionAffEndPt.setPort(String.valueOf(portToUse));
                    endpt = sessionAffEndPt;
                } else {
                    // no button pressed
                    endpt = null;
                }
            }
        } else {
            // port is other than 80, then directly consider it.
            endpt = sessionAffEndPt;
        }
    } else {
        // check this role uses public port 443
        endpt = WAEclipseHelperMethods.findEndpointWithPubPort(HTTPS_PORT, waRole);
        if (endpt != null) {
            // endpoint on this role uses public port 443
            PluginUtil.displayWarningDialog(message("sslTtl"), message("sslWarnMsg"));
        } else {
            // check if another role uses 443 as a public port
            WindowsAzureRole roleWithHTTPS = WAEclipseHelperMethods.findRoleWithEndpntPubPort(HTTPS_PORT,
                    waProjManager);
            if (roleWithHTTPS != null) {
                // another role uses 443 as a public port
                // 1. If this role uses public port 80
                endpt = WAEclipseHelperMethods.findEndpointWithPubPort(HTTP_PORT, waRole);
                if (endpt != null) {
                    /*
                     * endpoint on this role uses public port 80
                     * and 443 has been used on some other role then set to 8443
                     * or some suitable public port
                     */
                    int pubPort = HTTPS_NXT_PORT;
                    while (!waProjManager.isValidPort(String.valueOf(pubPort),
                            WindowsAzureEndpointType.Input)) {
                        pubPort++;
                    }
                    int choice = Messages.showYesNoDialog(
                            message("sslhttp").replace("${epName}", endpt.getName())
                                    .replace("${pubPort}", String.valueOf(pubPort))
                                    .replace("${privPort}", endpt.getPrivatePort()),
                            message("sslTtl"), Messages.getQuestionIcon());
                    if (choice == Messages.YES) {
                        endpt.setPort(String.valueOf(pubPort));
                    } else {
                        // no button pressed
                        endpt = null;
                    }
                } else {
                    // 2. Ask for creating new endpoint
                    List<String> endPtData = WASSLOffloadingUtilMethods.prepareEndpt(HTTPS_NXT_PORT, waRole,
                            waProjManager);
                    int choice = Messages.showYesNoCancelDialog(String.format(message("sslNoHttp"),
                            endPtData.get(0), endPtData.get(1), endPtData.get(2)), message("sslTtl"),
                            Messages.getQuestionIcon());
                    if (choice == Messages.YES) {
                        endpt = waRole.addEndpoint(endPtData.get(0), WindowsAzureEndpointType.Input,
                                endPtData.get(2), endPtData.get(1));
                        setModified(true);
                    } else {
                        // no button pressed
                        endpt = null;
                    }
                }
            } else {
                // no public port 443 on this role, nor on other any role
                // 1. If this role uses public port 80
                endpt = WAEclipseHelperMethods.findEndpointWithPubPort(HTTP_PORT, waRole);
                if (endpt != null) {
                    // endpoint on this role uses public port 80
                    int choice = Messages.showYesNoDialog(
                            message("sslhttp").replace("${epName}", endpt.getName())
                                    .replace("${pubPort}", String.valueOf(HTTPS_PORT))
                                    .replace("${privPort}", endpt.getPrivatePort()),
                            message("sslTtl"), Messages.getQuestionIcon());
                    if (choice == Messages.YES) {
                        endpt.setPort(String.valueOf(HTTPS_PORT));
                    } else {
                        // no button pressed
                        endpt = null;
                    }
                } else {
                    // 2. Ask for creating new endpoint
                    List<String> endPtData = WASSLOffloadingUtilMethods.prepareEndpt(HTTPS_PORT, waRole,
                            waProjManager);
                    int choice = Messages.showYesNoDialog(String.format(message("sslNoHttp"), endPtData.get(0),
                            endPtData.get(1), endPtData.get(2)), message("sslTtl"), Messages.getQuestionIcon());
                    if (choice == Messages.YES) {
                        endpt = waRole.addEndpoint(endPtData.get(0), WindowsAzureEndpointType.Input,
                                endPtData.get(2), endPtData.get(1));
                        setModified(true);
                    } else {
                        // no button pressed
                        endpt = null;
                    }
                }
            }
        }
    }
    return endpt;
}