Example usage for org.eclipse.jface.dialogs MessageDialog openQuestion

List of usage examples for org.eclipse.jface.dialogs MessageDialog openQuestion

Introduction

In this page you can find the example usage for org.eclipse.jface.dialogs MessageDialog openQuestion.

Prototype

public static boolean openQuestion(Shell parent, String title, String message) 

Source Link

Document

Convenience method to open a simple Yes/No question dialog.

Usage

From source file:com.safi.server.manager.SafiServerRemoteManager.java

@Override
public void handleNotification(final Notification notification, Object handback) {
    if (handback == serverMonitorHandback) {
        if (observeError
                && "error".equalsIgnoreCase(((AttributeChangeNotification) notification).getAttributeType())) {
            final Display d = PlatformUI.getWorkbench().getDisplay();
            d.asyncExec(new Runnable() {
                @Override//from   ww  w  .  j av  a  2  s  . c om
                public void run() {
                    // Shell sh = new Shell();
                    BooleanMessageDialogWithToggle.openInformation(d.getActiveShell(),
                            ((AttributeChangeNotification) notification).getAttributeName(),
                            notification.getMessage(), "Notify me of server info messages in the future", true,
                            AsteriskDiagramEditorPlugin.getInstance().getPreferenceStore(),
                            PreferenceConstants.PREF_SERVER_ERROR_NOTIFICATION);
                }
            });
        } else if (observerInfo
                && "info".equalsIgnoreCase(((AttributeChangeNotification) notification).getAttributeType())) {
            final Display d = PlatformUI.getWorkbench().getDisplay();
            d.asyncExec(new Runnable() {
                @Override
                public void run() {
                    // Shell sh = new Shell();
                    BooleanMessageDialogWithToggle.openInformation(d.getActiveShell(),
                            ((AttributeChangeNotification) notification).getAttributeName(),
                            notification.getMessage(), "Notify me of server error messages in the future", true,
                            AsteriskDiagramEditorPlugin.getInstance().getPreferenceStore(),
                            PreferenceConstants.PREF_SERVER_INFO_NOTIFICATION);
                }
            });
        } else if (SafiServerMonitor.LOG_EVENT_TYPE
                .equals(((AttributeChangeNotification) notification).getAttributeType())) {
            MessageConsole console = SafiServerPlugin.getDefault().getServerConsole();
            if (console != null) {
                try {
                    // LoggingEvent evt = (LoggingEvent) ((AttributeChangeNotification)
                    // notification)
                    // .getNewValue();
                    // console.newMessageStream().write(evt.getRenderedMessage() + "\n");
                    String msg = (String) ((AttributeChangeNotification) notification).getNewValue();
                    console.newMessageStream().write(msg + "\n");
                } catch (Exception e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        } else if (SafiServerMonitor.SYSINFO_EVENT_TYPE
                .equalsIgnoreCase(((AttributeChangeNotification) notification).getAttributeType())) {
            SysInfo info = (SysInfo) ((AttributeChangeNotification) notification).getNewValue();
            SafiServerPlugin.getDefault().serverInfoUpdated(info);
        } else if (SafiServerMonitor.DEBUG_EVENT_TYPE
                .equals(((AttributeChangeNotification) notification).getAttributeType())) {
            AttributeChangeNotification acn = (AttributeChangeNotification) notification;
            Object obj = acn.getNewValue();
            if (obj instanceof ENotificationWrapper) {
                if (debugEventListeners != null)
                    for (DebugEventListener l : debugEventListeners) {
                        l.debugEvent((ENotificationWrapper) obj);
                    }
                // ENotificationWrapper wrapper = (ENotificationWrapper)obj;
                // EObjectReference notObj = (EObjectReference)wrapper.getNotifiderID();
                // String uid = notObj.getUID();

            }
        }
    } else if (notification instanceof JMXConnectionNotification) {
        final JMXConnectionNotification n = (JMXConnectionNotification) notification;
        if (JMXConnectionNotification.OPENED.equals(n.getType())) {
            listenerRegistered = true;
            SafiServerPlugin.getDefault().serverConnected(n.getMessage());
        } else if (JMXConnectionNotification.CLOSED.equals(n.getType())
                || JMXConnectionNotification.FAILED.equals(n.getType()) && !isClosing) {
            reset();
            SafiServerPlugin.getDefault().serverDisconnected(n.getMessage());
            final Display d = PlatformUI.getWorkbench().getDisplay();
            d.asyncExec(new Runnable() {
                @Override
                public void run() {
                    // Shell sh = new Shell();
                    boolean b = MessageDialog.openQuestion(d.getActiveShell(), "Management Connection Lost",
                            "Management connection to production SafiServer was lost: " + n.getMessage()
                                    + ". Would you like to try to reconnect?");
                    if (b)
                        try {
                            // connect();
                            // SafiServerPlugin.getDefault().updateTraceLogLevel();
                            new ReconnectDialog(d.getActiveShell()).open();
                        } catch (Exception e) {
                            e.printStackTrace();
                            MessageDialog.openError(d.getActiveShell(), "Management Connection Error",
                                    "Couldn't connnect to production SafiServer management channel: "
                                            + e.getLocalizedMessage());
                        }
                }
            });
        }
    }
}

From source file:com.safi.workshop.audio.ImportAudioFileWizard.java

License:Open Source License

@Override
public boolean performFinish() {
    // if (recordPromptPage != null)
    // recordPromptPage.dispose();
    String pname = categoryPage.getProjectName();
    SafletProject newProject = null;// www  .  j  a va2s. c  om
    if (pname != null)
        try {
            newProject = DBManager.getInstance().getProjectByName(pname);
        } catch (DBManagerException e) {
            e.printStackTrace();
            Throwable th = e.getCause();
            MessageDialog.openError(getShell(), "Retrieve Error", "Couldn't find project named " + pname + ": "
                    + (th == null ? e : th).getLocalizedMessage());
        }
    String cat = categoryPage.getCategory();
    if (cat.startsWith("/"))
        cat = cat.substring(1);
    String promptName = filenamePage.getName();
    int idx = promptName.lastIndexOf('.');
    String exten = null;
    if (idx > 0) {
        String tmp = promptName.substring(0, idx);
        exten = promptName.substring(idx + 1, promptName.length());
        promptName = tmp;
    } else
        exten = "gsm";
    if (StringUtils.isNotBlank(cat)) {
        if (!cat.endsWith("/")) {
            cat += '/';
        }
        promptName = cat + promptName;
    }
    String description = filenamePage.getDescription();
    boolean isNew = false;
    String oldPromptName = null;
    String oldPromptExtension = null;
    if (prompt == null) {
        isNew = true;
        prompt = ConfigFactory.eINSTANCE.createPrompt();
        prompt.setCreatedBy(SafiServerPlugin.getDefault().getCurrentUser());
    } else {
        oldPromptName = prompt.getName();
        oldPromptExtension = prompt.getExtension();
    }
    prompt.setName(promptName);
    prompt.setExtension(exten);
    if (StringUtils.isNotBlank(description))
        prompt.setDescription(description);
    prompt.setLastModified(new Date());
    // prompt.getAsteriskServers().addAll(serverPage.getAsteriskServers());
    try {
        SafletProject oldProject = isNew ? null : prompt.getProject();
        boolean projectChanged = newProject != null
                && (isNew || prompt.getProject() == null || prompt.getProject().getId() != newProject.getId());
        if (startPage.getImportMode() == ImportMode.KEEP_EXISTING) {
            if (!StringUtils.equals(oldPromptName, prompt.getName())
                    || !StringUtils.equals(oldPromptExtension, prompt.getExtension()) || projectChanged)
                try {
                    SafiServerRemoteManager.getInstance().renamePromptFile(prompt.getId(),
                            newProject == null ? null : newProject.getName(), prompt.getName(),
                            prompt.getExtension());
                } catch (Exception e) {
                    e.printStackTrace();
                    Throwable th = e.getCause();
                    MessageDialog.openError(getShell(), "Rename Error",
                            "Couldn't rename existing prompt: " + (th == null ? e : th).getLocalizedMessage());
                    return false;
                }
        }
        if (projectChanged) {
            DBManager.getInstance().getProjectPrompts(newProject).add(prompt);
            projectChanged = true;
        }
        DBManager.getInstance().saveOrUpdateServerResource(prompt);
        if (projectChanged) {
            DBManager.getInstance().saveOrUpdateServerResource(newProject);
            if (oldProject != null)
                DBManager.getInstance().saveOrUpdateServerResource(oldProject);
        }
    } catch (DBManagerException e) {
        e.printStackTrace();
        Throwable th = e.getCause();
        MessageDialog.openError(getShell(), "Save Error",
                "Couldn't save prompt: " + (th == null ? e : th).getLocalizedMessage());
        return false;
    }
    File promptFile = null;
    switch (startPage.getImportMode()) {
    case IMPORT_EXISTING:
        promptFile = importPage.getAudioFile();
        break;
    case KEEP_EXISTING:
        break;
    case RECORD_NEW:
        try {
            promptFile = recordPromptPage.getConvertedFile();
        } catch (Exception e) {
            e.printStackTrace();
            Throwable th = e.getCause();
            MessageDialog.openError(getShell(), "Conversion Error",
                    "Couldn't convert recorded prompt: " + (th == null ? e : th).getLocalizedMessage());
            return false;
        }
        break;
    }
    if (promptFile != null) {
        try {
            SafiWorkshopEditorUtil.uploadPromptFile(prompt, promptFile);
        } catch (Exception e1) {
            e1.printStackTrace();
            MessageDialog.openError(getShell(), "Save Error",
                    "Couldn't upload file " + importPage.getFilename() + ": " + e1.getLocalizedMessage());
            return false;
        }
    }

    if (promptForSynch && SafiServerPlugin.getDefault().hasTelephonyModules()) {
        shell = SafiWorkshopEditorUtil.getActiveShell();
        boolean b = MessageDialog.openQuestion(shell, "Synchronize Now?",
                "One or more prompts were changed and may need to be synchronized "
                        + "with the Telephony subsystems. Do you wish to synchronize audio prompts now?");
        if (b) {
            AudioUtils.synchronizeTelephonySubsystemPrompts(
                    SafiServerPlugin.getDefault().getTelephonySubsystems());
        }
    }
    return true;
}

From source file:com.safi.workshop.serverview.ServerViewPanel.java

protected void updateServer() {
    Object[] checked = updatesTableViewer.getCheckedElements();
    if (checked == null || checked.length == 0)
        return;//from w w  w . j ava 2s  .co m
    boolean serverJarsTransported = false;
    int actionpaksTransported = 0;

    User user = SafiServerPlugin.getDefault().getCurrentUser();
    if (!EntitlementUtils.isUserEntitled(user, EntitlementUtils.ENTIT_UPDATE_SERVER)) {
        MessageDialog.openError(SafiWorkshopEditorUtil.getActiveShell(), "Not Entitled",
                "You do not have sufficient privileges to carry out this operation.");
        return;
    }
    for (Object obj : checked) {
        if (obj instanceof SafiServerJar) {
            final SafiServerJar sj = (SafiServerJar) obj;
            try {
                SafletPersistenceManager.getInstance().transferServerJar(sj.bundleSymbolicName, sj.url);
                serverJarsTransported = true;
            } catch (Exception e) {
                e.printStackTrace();
                AsteriskDiagramEditorPlugin.getInstance()
                        .logError("Couldn't update SafiServer core file " + sj.url, e);
                MessageDialog.openError(getShell(), "SafiServer Core Update Failure",
                        "Couldn't update SafiServer core file " + sj.url + ". " + e.getLocalizedMessage());

            }
        } else if (obj instanceof ActionPak && ((ActionPak) obj).actionPakJars != null) {
            for (ActionPakJar jar : ((ActionPak) obj).actionPakJars) {
                try {
                    SafletPersistenceManager.getInstance().transferActionPakJar(jar.bundleSymbolicName,
                            jar.url);
                    actionpaksTransported++;
                } catch (Exception e) {
                    e.printStackTrace();
                    AsteriskDiagramEditorPlugin.getInstance()
                            .logError("Couldn't update ActionPak file " + jar.url, e);
                    MessageDialog.openError(getShell(), "SafiServer ActionPak Update Failure",
                            "Couldn't update ActionPak file " + "Couldn't update ActionPak file " + jar.url
                                    + ". " + e.getLocalizedMessage());
                }
            }

        }
    }

    if (serverJarsTransported) {
        if (MessageDialog.openQuestion(getShell(), "Restart SafiServer?",
                "The SafiServer must be restarted for some of the changes to take effect.  Would you like to restart the server now?")) {
            try {
                SafiServerRemoteManager.getInstance().restartServerService();
            } catch (SafiServerManagementException e) {
                AsteriskDiagramEditorPlugin.getInstance().logError("Couldn't restart SafiServer: ", e);
                MessageDialog.openError(getShell(), "Restart Server Error",
                        "The remote SafiServer couldn't be restarted: " + e.getLocalizedMessage());
                e.printStackTrace();
            }
        }
    } else if (actionpaksTransported > 0) {
        MessageDialog.openInformation(getShell(), "ActionPak Update Successful",
                actionpaksTransported + (actionpaksTransported > 1 ? " ActionPaks were" : "ActionPak was")
                        + " successfully uploaded to the SafiServer.");
    }
    reloadModel();
}

From source file:com.safi.workshop.util.SafletPersistenceManager.java

public void publishSaflet(IResource safletResource, Resource emfResource, com.safi.core.saflet.Saflet handler,
        boolean enabled, AsteriskDiagramEditor editor) throws PublishResourceException {
    // TODO Auto-generated method stub
    Session session = null;//  ww  w. j av  a 2s . c o m
    try {
        session = DBManager.getInstance().createSession();
    } catch (DBManagerException e1) {
        throw new PublishResourceException(e1);
    }
    //    final Transaction transaction = session.getTransaction();
    Transaction transaction = null;
    try {
        transaction = session.beginTransaction();
        Date now = new Date();
        IProject project = safletResource.getProject();
        int pid = getResourceId(project);
        boolean isNewProject = false;
        SafletProject parentProject = null;
        if (pid != -1) {
            List results = session.createCriteria(SafletProject.class).add(Restrictions.eq("id", pid)).list();
            if (!results.isEmpty()) {
                parentProject = (SafletProject) results.get(0);
            }
        }
        List results = session.createCriteria(SafletProject.class)
                .add(Restrictions.eq("name", project.getName())).list();
        SafletProject sameNameProj = null;
        if (!results.isEmpty()) {
            sameNameProj = (SafletProject) results.get(0);
        }
        if (parentProject == null) {

            if (sameNameProj != null) {
                boolean ok = MessageDialog.openQuestion(SafiWorkshopEditorUtil.getActiveShell(),
                        "Project Exists",
                        "A SafiProject named " + project.getName()
                                + " exists on the server.  Press OK to merge this project into the one on the serveror "
                                + "press Cancel to halt the publishing process.");
                if (!ok)
                    return;
                parentProject = sameNameProj;
            }
        } else if (sameNameProj != null && sameNameProj != parentProject) {
            boolean ok = MessageDialog.openQuestion(SafiWorkshopEditorUtil.getActiveShell(),
                    "Project Was Renamed",
                    "The local project was renamed from  " + parentProject.getName() + " to "
                            + project.getName()
                            + " but a project by that name exists on the server.  Press OK to revert the local project name to "
                            + parentProject.getName() + " or press Cancel to halt the publishing process.");
            if (!ok) {
                return;
            }
            IProjectDescription desc = project.getDescription();
            desc.setName(parentProject.getName());
            project.move(desc, true, null);
        }

        Saflet saflet = null;
        if (parentProject == null) {
            isNewProject = true;
            parentProject = ConfigFactory.eINSTANCE.createSafletProject();
            // if (StringUtils.isNotBlank(pid)) {
            // try {
            // parentProject.setId(Integer.parseInt(pid));
            // project.setPersistentProperty(new QualifiedName(AsteriskDiagramEditorPlugin.ID,
            // PersistenceProperties.PROJ_ID), String.valueOf(parentProject.getId()));
            // } catch (NumberFormatException e) {
            // }
            // }

            project.setPersistentProperty(MODIFIED_KEY, String.valueOf(now.getTime()));
            project.setPersistentProperty(UPDATED_KEY, String.valueOf(now.getTime()));

            parentProject.setName(project.getName());
            session.save(parentProject);
            project.setPersistentProperty(RES_ID_KEY, String.valueOf(parentProject.getId()));
        } else {
            project.setPersistentProperty(RES_ID_KEY, String.valueOf(parentProject.getId()));
            project.setPersistentProperty(MODIFIED_KEY, String.valueOf(now.getTime()));
            project.setPersistentProperty(UPDATED_KEY, String.valueOf(now.getTime()));

            Saflet sameName = null;
            Saflet sameId = null;
            int safletId = getResourceId(safletResource);
            for (Saflet s : parentProject.getSaflets()) {
                if (safletId != -1) {
                    if (s.getId() == safletId) {
                        sameId = s;
                    }
                    if (StringUtils.equals(s.getName(), handler.getName())) {
                        sameName = s;
                    }
                }
            }

            // see if a saflet with the same name exists in a different project
            if (sameName == null) {
                results = session.createCriteria(Saflet.class).add(Restrictions.eq("name", handler.getName()))
                        .list();
                if (!results.isEmpty()) {
                    Saflet s = (Saflet) results.get(0);
                    boolean ok = MessageDialog.openQuestion(SafiWorkshopEditorUtil.getActiveShell(),
                            "Saflet Exists",
                            "A Saflet named " + handler.getName() + " exists on the server under project "
                                    + s.getProject().getName() + ".  Do you want to overwrite?");
                    if (!ok) {
                        transaction.rollback();
                        return;
                    }
                    EcoreUtil.remove(s);
                    session.delete(s);
                }
            }

            if (sameId != null && sameId == sameName) {
                saflet = sameId;
            } else if (sameName != null) {
                boolean ok = MessageDialog.openQuestion(SafiWorkshopEditorUtil.getActiveShell(),
                        "Saflet Exists", "A Saflet named " + handler.getName()
                                + " exists on the server.  Do you want to overwrite?");
                if (!ok) {
                    return;
                }
                // SafletProject p = sameName.getProject();
                EcoreUtil.remove(sameName);
                // session.save(p);
                session.delete(sameName);
                if (sameId != null)
                    saflet = sameId;
            } else if (sameId != null) {
                saflet = sameId;
            }

        }

        User user = SafiServerPlugin.getDefault().getCurrentUser();
        if (saflet == null) {
            saflet = ConfigFactory.eINSTANCE.createSaflet();
            saflet.setCreatedBy(user);
            parentProject.getSaflets().add(saflet);
        }

        saflet.setName(handler.getName());
        saflet.setDescription(handler.getDescription());
        saflet.setLastModified(now);
        saflet.setModifiedBy(user);
        saflet.setLastUpdated(now);
        ByteArrayOutputStream strema = new ByteArrayOutputStream();
        emfResource.save(strema, null);
        printProject(saflet.getProject());

        //      saflet.setCode(new String(strema.toByteArray()));
        saflet.setCode(strema.toByteArray());
        session.save(saflet);
        //      if (isNewProject)
        //         session.save(parentProject);
        //      else
        //         session.save(saflet);

        if (!StringUtils.equals(project.getName(), parentProject.getName())) {
            parentProject.setName(project.getName());

            session.save(parentProject);
        }
        if (editor != null) {
            EAttribute nameAttr = SafletPackage.eINSTANCE.getSaflet_Id();
            editor.getEditingDomain().getCommandStack()
                    .execute(SetCommand.create(editor.getEditingDomain(), handler, nameAttr, saflet.getId()));
            editor.doSave(new NullProgressMonitor());
        } else
            handler.setId(saflet.getId());

        safletResource.setPersistentProperty(MODIFIED_KEY, String.valueOf(now.getTime()));
        safletResource.setPersistentProperty(UPDATED_KEY, String.valueOf(now.getTime()));
        safletResource.setPersistentProperty(RES_ID_KEY, String.valueOf(saflet.getId()));

        transaction.commit();
        project.refreshLocal(IResource.DEPTH_INFINITE, null);
        // }
    } catch (Exception e) {
        e.printStackTrace();
        if (transaction != null)
            transaction.rollback();
        throw new PublishResourceException(e);
    } finally {
        session.close();
    }
}

From source file:com.safi.workshop.util.SafletPersistenceManager.java

public void prepareProjects(Shell shell, List<ServerResource> serverResourceList,
        Map<SafletProject, IProject> projectToResourceMap, List<IProject> existingProjects) {
    for (ServerResource sr : serverResourceList) {
        IProject sameId = null;/*from   w w  w  .  ja va2s. c  o m*/
        IProject sameName = null;

        if (sr instanceof SafletProject) {
            for (IProject p : existingProjects) {
                if (p.getName().equals(sr.getName()))
                    sameName = p;
                int pid = SafletPersistenceManager.getInstance().getResourceId(p);
                if (sr.getId() == pid && pid != -1)
                    sameId = p;
            }
            if (sameId != null && sameName != null && sameName != sameId) {
                MessageDialog.openWarning(shell, "Project Name Conflict",
                        "A project with the name " + sameName.getName()
                                + " already exists and has been persisted under a different name. Project "
                                + sameName.getName() + " cannot be retrieved");
                continue;
            } else if (sameId != null && sameName == null) { // its been renamed
                boolean ok = MessageDialog.openQuestion(shell, "Project Renamed", "The local project "
                        + sameId.getName()
                        + " has been renamed on the SafiServer.  Press OK to rename the local project instance or press "
                        + "'Cancel' to skip this project.");
                if (!ok)
                    continue;
                try {
                    IProjectDescription desc = sameId.getDescription();
                    desc.setName(sr.getName());

                    sameId.move(desc, true, null);
                    projectToResourceMap.put((SafletProject) sr, sameId);
                } catch (CoreException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    MessageDialog.openError(shell, "Move Project Error",
                            "Couldn't move project " + sameId.getName() + ": " + e.getLocalizedMessage());
                    AsteriskDiagramEditorPlugin.getInstance().logError("Move Project Error", e);
                    continue;
                }
            } else if (sameId != null && sameId == sameName) { // name is unchanged
                projectToResourceMap.put((SafletProject) sr, sameId);
            } else if (sameName != null) {
                projectToResourceMap.put((SafletProject) sr, sameName);
            } else {
                try {
                    IProject newProj = createNewProject((SafletProject) sr);
                    projectToResourceMap.put((SafletProject) sr, newProj);
                } catch (CoreException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    MessageDialog.openError(shell, "Create Project Error",
                            "Couldn't create project " + sr.getName() + ": " + e.getLocalizedMessage());
                    AsteriskDiagramEditorPlugin.getInstance().logError("Create Project Error", e);
                    continue;
                }
            }
        }

    }
}

From source file:com.salesforce.ide.core.internal.utils.Utils.java

License:Open Source License

public static boolean openQuestion(String pTitle, String pMessage) {
    return MessageDialog.openQuestion(getShell(), pTitle, pMessage);
}

From source file:com.salesforce.ide.core.internal.utils.Utils.java

License:Open Source License

public static boolean openQuestion(Shell shell, String pTitle, String pMessage) {
    return MessageDialog.openQuestion(shell, pTitle, pMessage);
}

From source file:com.salesforce.ide.ui.packagemanifest.PackageManifestChangeListener.java

License:Open Source License

public void resourceChanged(IResourceChangeEvent event) {
    //we are only interested in POST_CHANGE events
    if (event.getType() != IResourceChangeEvent.POST_CHANGE)
        return;// w  w  w. j  a v a2 s  .  com
    IResourceDelta rootDelta = event.getDelta();

    final Set<IResource> changed = new HashSet<IResource>();
    IResourceDeltaVisitor visitor = new IResourceDeltaVisitor() {
        public boolean visit(IResourceDelta delta) {
            int kind = delta.getKind();

            IResource resource = delta.getResource();
            //only interested in package manifest files
            if (!(resource.getType() == IResource.FILE
                    && Constants.PACKAGE_MANIFEST_FILE_NAME.equalsIgnoreCase(resource.getName()))) {
                return true;
            }

            if (kind == IResourceDelta.ADDED) {
                ForceStartup.getManifestCache().put(resource, getPackage(resource));
            } else if (kind == IResourceDelta.REMOVED) {
                ForceStartup.getManifestCache().remove(resource);
            }

            if (kind != IResourceDelta.CHANGED)
                return true;

            //only interested in content changes
            if ((delta.getFlags() & IResourceDelta.CONTENT) == 0)
                return true;

            Package oldPackage = ForceStartup.getManifestCache().get(resource);
            Package newPackage = getPackage(resource);

            if (!isEqual(oldPackage, newPackage)) {
                changed.add(resource);
            }
            return true;
        }
    };

    try {
        rootDelta.accept(visitor);

        if (!Utils.isEmpty(changed)) {
            for (final IResource resource : changed) {
                final IProject project = resource.getProject();

                if (project.hasNature(DefaultNature.NATURE_ID)) {

                    final Package newPackage = getPackage(resource);

                    Display.getDefault().asyncExec(new Runnable() {
                        public void run() {
                            try {
                                // remove ourself so that we don't receive new events while processing old ones 
                                // (RefreshResourceAction will touch package.xml causing an infinite dialog loop)
                                // TODO investigate whether new events should be combined with old events
                                ForceStartup.removePackageManifestChangeListener();
                                final Package oldPackage = ForceStartup.getManifestCache().get(resource);

                                if (!isEqual(oldPackage, newPackage)) {
                                    ForceStartup.getManifestCache().put(resource, newPackage);

                                    if (logger.isDebugEnabled()) {
                                        logger.debug("Manifest resource '"
                                                + resource.getFullPath().toPortableString()
                                                + "' found to be refresh-able");
                                    }

                                    if (MessageDialog.openQuestion(Display.getCurrent().getActiveShell(),
                                            Messages.PackageManifestChangeListener_dialog_title,
                                            NLS.bind(Messages.PackageManifestChangeListener_dialog_message,
                                                    resource.getFullPath(), project.getName()))) {
                                        RefreshResourceAction action = new RefreshResourceAction();
                                        action.selectionChanged(null, new StructuredSelection(project));
                                        action.run(null);
                                    }
                                }

                            } catch (ForceProjectException e) {
                                logger.warn("An error occured while refreshing " + project.getName() + ": "
                                        + ForceExceptionUtils.getRootCauseMessage(e));
                            } finally {
                                // add ourself since we removed above
                                ForceStartup.addPackageManifestChangeListener();
                            }
                        }
                    });
                }
            }
        }
    } catch (CoreException e) {
        String logMessage = Utils.generateCoreExceptionLog(e);
        logger.warn("An error occured while trying to access files in ResourceDelta: " + logMessage);
    }
}

From source file:com.salesforce.ide.ui.properties.ProjectContentPropertyPage.java

License:Open Source License

private void refreshMessageDialogCheck() {
    try {/*from   w ww.ja v a2 s. com*/
        // if packageManifest content summary diff than project current/orig one, then prompt refresh option dialog
        if (Utils.isNotEmpty(currentSavedSummary) && !currentSavedSummary.equals(originalSummary)) {
            if (MessageDialog.openQuestion(Display.getCurrent().getActiveShell(),
                    com.salesforce.ide.ui.internal.Messages.PackageManifestChangeListener_dialog_title,
                    NLS.bind(
                            com.salesforce.ide.ui.internal.Messages.PackageManifestChangeListener_dialog_message,
                            getProject().getName()))) {
                ForceStartup.removePackageManifestChangeListener();
                RefreshResourceAction action = new RefreshResourceAction();
                IFolder srcFolder = getProjectService().getSourceFolder(getProject());
                if (srcFolder != null && srcFolder.exists()) {
                    action.selectionChanged(null, new StructuredSelection(srcFolder));
                    refreshProject(action);
                    // set original summary to current saved summary only successfully refresh project
                    originalSummary = currentSavedSummary;
                } else {
                    logger.warn("Unable to refresh package.xml changes - source folder does not exists");
                }
            }
        }
    } catch (InterruptedException e) {
        logger.warn("Operation cancelled: " + e.getMessage());
    } catch (Exception fpe) {
        logger.error(
                "Force project exception occurred when perform refresh as part of saving new project content property",
                fpe);
    } finally {
        ForceStartup.addPackageManifestChangeListener();
    }
}

From source file:com.salesforce.ide.ui.refactoring.ResourceDeleteParticipant.java

License:Open Source License

@Override
public RefactoringStatus checkConditions(IProgressMonitor monitor, CheckConditionsContext context)
        throws OperationCanceledException {
    // REVIEWME: what to do w/ ResourceChangeChecker and/or ValidateEditChecker

    Display.getDefault().syncExec(new Runnable() {
        public void run() {
            Set<IResource> deletedResources = deleteChange.getRefactorController().getRefactorModel()
                    .getChangeResources();
            List<IResource> resources = new ArrayList<IResource>();
            StringBuffer buffer = new StringBuffer();
            try {
                Component workflow = deleteChange.getComponentFactory()
                        .getComponentByComponentType(Constants.WORKFLOW);
                Component portal = deleteChange.getComponentFactory()
                        .getComponentByComponentType(Constants.PORTAL);
                Component site = deleteChange.getComponentFactory()
                        .getComponentByComponentType(Constants.CUSTOM_SITE);

                List<IResource> workflows = new ArrayList<IResource>();
                List<IResource> sites = new ArrayList<IResource>();
                List<IResource> portals = new ArrayList<IResource>();

                for (Object o : deletedResources) {
                    if (o instanceof IFile) {
                        IFile file = (IFile) o;

                        if (file.getFileExtension().equals(portal.getFileExtension())) {
                            resources.add(file);
                            portals.add(file);
                        }/*from  w  w  w  .j a  va2  s  . c  o  m*/

                        else if (file.getFileExtension().equals(site.getFileExtension())) {
                            resources.add(file);
                            sites.add(file);
                        }

                        else if (file.getFileExtension().equals(workflow.getFileExtension())) {
                            resources.add(file);
                            workflows.add(file);
                        }
                    }
                }

                Collections.sort(portals, new Comparator<IResource>() {
                    public int compare(IResource o1, IResource o2) {
                        return o1.getName().compareToIgnoreCase(o2.getName());
                    }
                });

                Collections.sort(sites, new Comparator<IResource>() {
                    public int compare(IResource o1, IResource o2) {
                        return o1.getName().compareToIgnoreCase(o2.getName());
                    }
                });

                Collections.sort(workflows, new Comparator<IResource>() {
                    public int compare(IResource o1, IResource o2) {
                        return o1.getName().compareToIgnoreCase(o2.getName());
                    }
                });

                for (IResource file : portals) {
                    addBullet(buffer,
                            NLS.bind(Messages.ResourceDeleteParticipant_fileLocallyDeleted_message,
                                    file.getName()),
                            NLS.bind(Messages.ResourceDeleteParticipant_remotePortalConfirmation_message,
                                    resources.indexOf(file),
                                    file.getFullPath().removeFileExtension().lastSegment()));
                }

                for (IResource file : sites) {
                    addBullet(buffer,
                            NLS.bind(Messages.ResourceDeleteParticipant_fileLocallyDeleted_message,
                                    file.getName()),
                            NLS.bind(Messages.ResourceDeleteParticipant_remoteSiteConfirmation_message,
                                    resources.indexOf(file),
                                    file.getFullPath().removeFileExtension().lastSegment()));
                }

                if (workflows.size() == 1) {
                    IResource file = workflows.get(0);

                    addBullet(buffer,
                            NLS.bind(Messages.ResourceDeleteParticipant_fileLocallyDeleted_message,
                                    file.getName()),
                            NLS.bind(Messages.ResourceDeleteParticipant_remoteWorkflowConfirmation_message,
                                    resources.indexOf(file)));
                }

                else if (workflows.size() > 0) {
                    for (IResource file : workflows) {
                        addBullet(buffer, NLS.bind(
                                Messages.ResourceDeleteParticipant_fileLocallyDeleted_message, file.getName()));
                    }

                    addBullet(buffer,
                            NLS.bind(Messages.ResourceDeleteParticipant_remoteWorkflowConfirmation_message,
                                    resources.indexOf(workflows.get(0))));
                }

            } catch (FactoryException e) {
                logger.error("Could not get Workflow component", e); //$NON-NLS-1$
            }

            boolean showWarning = true;
            if (resources.size() != deletedResources.size()
                    && !MessageDialog.openQuestion(Display.getDefault().getActiveShell(),
                            Messages.ResourceDeleteParticipant_remoteConfirmation_title,
                            Messages.ResourceDeleteParticipant_remoteConfirmation_message)) {
                cancelFlag = true;
                showWarning = false;
            }

            if (resources.size() > 0 && showWarning) {
                WebOnlyDeleteMessageDialog.openWarning(Display.getDefault().getActiveShell(), Messages.WARNING,
                        buffer.toString(), resources);

                if (resources.size() == deletedResources.size()) {
                    cancelFlag = true;
                }
            }
        }
    });

    if (cancelFlag) {
        deleteChange.setRemoteDeleteCanceled(true);
        return null;
    }

    if (deleteChange.getRefactorController().getRefactorModel().isChangeResourcesEmpty()) {
        logger.warn("Change elements for delete are null or empty");
        return null;
    }

    RefactoringStatus refactoringStatus = null;
    try {
        refactoringStatus = deleteChange.getRefactorController().validateDelete(monitor);
    } catch (InterruptedException e) {
        logger.warn("Operation canceled by user");
        throw new OperationCanceledException(e.getMessage());
    }

    return refactoringStatus;
}