Package lcmc.common.ui.utils

Examples of lcmc.common.ui.utils.ComponentWithTest


            }
        });
        items.add(addConstraintPlaceholderOr);

        /* stop all services. */
        final ComponentWithTest stopAllMenuItem = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Hb.StopAllServices"),
                ServiceInfo.STOP_ICON,
                new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (servicesInfo.getBrowser().crmStatusFailed()) {
                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                        }
                        if (servicesInfo.getBrowser().getExistingServiceList(null).isEmpty()) {
                            return "there are no services";
                        }
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (!si.isStopped(Application.RunMode.LIVE) && !si.getService().isOrphaned()) {
                                return null;
                            }
                        }
                        return "all services are stopped";
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        servicesInfo.hidePopup();
                        final Host dcHost = servicesInfo.getBrowser().getDCHost();
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (si.getGroupInfo() == null
                                    && !si.isStopped(Application.RunMode.LIVE)
                                    && !si.getService().isOrphaned()
                                    && !si.getService().isNew()) {
                                si.stopResource(dcHost, Application.RunMode.LIVE);
                            }
                        }
                        servicesInfo.getBrowser().getCrmGraph().repaint();
                    }
                });
        final ButtonCallback stopAllItemCallback = servicesInfo.getBrowser().new ClMenuItemCallback(null)
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host host) {
                        final Host thisDCHost = servicesInfo.getBrowser().getDCHost();
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (si.getGroupInfo() == null
                                    && !si.isConstraintPlaceholder()
                                    && !si.isStopped(Application.RunMode.TEST)
                                    && !si.getService().isOrphaned()
                                    && !si.getService().isNew()) {
                                si.stopResource(thisDCHost, Application.RunMode.TEST);
                            }
                        }
                    }
                });
        servicesInfo.addMouseOverListener(stopAllMenuItem, stopAllItemCallback);
        items.add((UpdatableItem) stopAllMenuItem);

        /* unmigrate all services. */
        final ComponentWithTest unmigrateAllMenuItem = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Hb.UnmigrateAllServices"),
                ServiceInfo.UNMIGRATE_ICON,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                    @Override
                    public boolean check() {
                        if (servicesInfo.getBrowser().crmStatusFailed()) {
                            return false;
                        }
                        if (servicesInfo.getBrowser().getExistingServiceList(null).isEmpty()) {
                            return false;
                        }
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (si.getMigratedTo(runMode) != null || si.getMigratedFrom(runMode) != null) {
                                return true;
                            }
                        }
                        return false;
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        servicesInfo.hidePopup();
                        final Host dcHost = servicesInfo.getBrowser().getDCHost();
                        for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                            if (si.getMigratedTo(runMode) != null || si.getMigratedFrom(runMode) != null) {
                                si.unmigrateResource(dcHost, Application.RunMode.LIVE);
                            }
                        }
                        servicesInfo.getBrowser().getCrmGraph().repaint();
                    }
                });
        final ButtonCallback unmigrateAllItemCallback =
                servicesInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                for (final ServiceInfo si : servicesInfo.getBrowser().getExistingServiceList(null)) {
                                    if (si.getMigratedTo(runMode) != null || si.getMigratedFrom(runMode) != null) {
                                        si.unmigrateResource(dcHost, Application.RunMode.TEST);
                                    }
                                }
                            }
                        });
        servicesInfo.addMouseOverListener(unmigrateAllMenuItem, unmigrateAllItemCallback);
        items.add((UpdatableItem) unmigrateAllMenuItem);

        /* remove all services. */
        final ComponentWithTest removeMenuItem = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Hb.RemoveAllServices"),
                ClusterBrowser.REMOVE_ICON,
                new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED))
                .enablePredicate(new EnablePredicate() {
View Full Code Here


     * Create menu items for selected services.
     */
    private void createSelectedServicesPopup(final Iterable<ServiceInfo> selectedServiceInfos,
                                             final Collection<UpdatableItem> items) {
        /* start resources */
        final ComponentWithTest startMenuItem =
                menuFactory.createMenuItem(Tools.getString("PcmkMultiSelectionInfo.StartSelectedResources"),
                        ServiceInfo.START_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                boolean allStarted = true;
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (!si.isStarted(Application.RunMode.LIVE)) {
                                        allStarted = false;
                                    }
                                    final String avail = si.getService().isAvailableWithText();
                                    if (avail != null) {
                                        return avail;
                                    }
                                }
                                if (allStarted) {
                                    return Tools.getString("ServiceInfo.AlreadyStarted");
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                pcmkMultiSelectionInfo.hidePopup();
                                final Host dcHost = getBrowser().getDCHost();
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    si.startResource(dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback startItemCallback = getBrowser().new ClMenuItemCallback(null)
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        for (final ServiceInfo si : selectedServiceInfos) {
                            if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                continue;
                            }
                            si.startResource(dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(startMenuItem, startItemCallback);
        items.add((UpdatableItem) startMenuItem);
        /* stop resources */
        final ComponentWithTest stopMenuItem =
                menuFactory.createMenuItem(Tools.getString("PcmkMultiSelectionInfo.StopSelectedResources"),
                        ServiceInfo.STOP_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                boolean allStopped = true;
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (!si.isStopped(Application.RunMode.LIVE)) {
                                        allStopped = false;
                                    }
                                    final String avail = si.getService().isAvailableWithText();
                                    if (avail != null) {
                                        return avail;
                                    }
                                }
                                if (allStopped) {
                                    return Tools.getString("ServiceInfo.AlreadyStopped");
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                pcmkMultiSelectionInfo.hidePopup();
                                final Host dcHost = getBrowser().getDCHost();
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    si.stopResource(dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback stopItemCallback = getBrowser().new ClMenuItemCallback(null)
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        for (final ServiceInfo si : selectedServiceInfos) {
                            if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                continue;
                            }
                            si.stopResource(dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(stopMenuItem, stopItemCallback);
        items.add((UpdatableItem) stopMenuItem);

        /* clean up resource */
        final UpdatableItem cleanupMenuItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.CleanUpFailedResource"),
                        ServiceInfo.SERVICE_RUNNING_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        Tools.getString("PcmkMultiSelectionInfo.CleanUpResource"),
                        ServiceInfo.SERVICE_RUNNING_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.getService().isAvailable() && si.isOneFailed(Application.RunMode.LIVE)) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                boolean failCount = false;
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (si.isOneFailedCount(Application.RunMode.LIVE)) {
                                        failCount = true;
                                    }
                                }
                                if (!failCount) {
                                    return "no fail count";
                                }
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    final String avail = si.getService().isAvailableWithText();
                                    if (avail != null) {
                                        return avail;
                                    }
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                pcmkMultiSelectionInfo.hidePopup();
                                final Host dcHost = getBrowser().getDCHost();
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    si.cleanupResource(dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        /* cleanup ignores CIB_file */
        items.add(cleanupMenuItem);

        /* manage resource */
        final ComponentWithTest manageMenuItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.ManageResource"),
                        ServiceInfo.MANAGE_BY_CRM_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (!si.isManaged(Application.RunMode.LIVE)) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    final String avail = si.getService().isAvailableWithText();
                                    if (avail != null) {
                                        return avail;
                                    }
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                pcmkMultiSelectionInfo.hidePopup();
                                final Host dcHost = getBrowser().getDCHost();
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    si.setManaged(true, dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback manageItemCallback = getBrowser().new ClMenuItemCallback(null)
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        for (final ServiceInfo si : selectedServiceInfos) {
                            if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                continue;
                            }
                            si.setManaged(true, dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(manageMenuItem, manageItemCallback);
        items.add((UpdatableItem) manageMenuItem);
        /* unmanage resource */
        final ComponentWithTest unmanageMenuItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.UnmanageResource"),
                        ServiceInfo.UNMANAGE_BY_CRM_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (si.isManaged(Application.RunMode.LIVE)) {
                                        return true;
                                    }
                                }
                                return false;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    final String avail = si.getService().isAvailableWithText();
                                    if (avail != null) {
                                        return avail;
                                    }
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                pcmkMultiSelectionInfo.hidePopup();
                                final Host dcHost = getBrowser().getDCHost();
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    si.setManaged(false, dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback unmanageItemCallback = getBrowser().new ClMenuItemCallback(null)
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        for (final ServiceInfo si : selectedServiceInfos) {
                            if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                continue;
                            }
                            si.setManaged(false, dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(unmanageMenuItem, unmanageItemCallback);
        items.add((UpdatableItem) unmanageMenuItem);
        /* migrate resource */
        for (final Host host : getBrowser().getClusterHosts()) {
            final String hostName = host.getName();
            final MyMenuItem migrateFromMenuItem =
                    menuFactory.createMenuItem(Tools.getString("PcmkMultiSelectionInfo.MigrateFromResource")
                                    + ' ' + hostName,
                            ServiceInfo.MIGRATE_ICON,
                            ClusterBrowser.STARTING_PTEST_TOOLTIP,

                            Tools.getString("PcmkMultiSelectionInfo.MigrateFromResource")
                                    + ' ' + hostName + " (offline)",
                            ServiceInfo.MIGRATE_ICON,
                            ClusterBrowser.STARTING_PTEST_TOOLTIP,
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                            .predicate(new Predicate() {
                                @Override
                                public boolean check() {
                                    return host.isCrmStatusOk();
                                }
                            })
                            .visiblePredicate(new VisiblePredicate() {
                                @Override
                                public boolean check() {
                                    if (!host.isCrmStatusOk()) {
                                        return false;
                                    }
                                    for (final ServiceInfo si : selectedServiceInfos) {
                                        if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                            continue;
                                        }
                                        if (getBrowser().crmStatusFailed() || !host.isCrmStatusOk()) {
                                            return false;
                                        }
                                        final List<String> runningOnNodes = si.getRunningOnNodes(Application.RunMode.LIVE);
                                        if (runningOnNodes == null || runningOnNodes.size() < 1) {
                                            return false;
                                        }
                                        boolean runningOnNode = false;
                                        for (final String ron : runningOnNodes) {
                                            if (hostName.toLowerCase(Locale.US).equals(ron.toLowerCase(Locale.US))) {
                                                runningOnNode = true;
                                                break;
                                            }
                                        }
                                        if (si.getService().isAvailable() && runningOnNode) {
                                        } else {
                                            return false;
                                        }
                                    }
                                    return true;
                                }
                            })
                            .addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    pcmkMultiSelectionInfo.hidePopup();
                                    final Host dcHost = getBrowser().getDCHost();
                                    for (final ServiceInfo si : selectedServiceInfos) {
                                        if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                            continue;
                                        }
                                        si.migrateFromResource(dcHost, hostName, Application.RunMode.LIVE);
                                    }
                                }
                            });
            final ButtonCallback migrateItemCallback = getBrowser().new ClMenuItemCallback(null)
                    .addAction(new CallbackAction() {
                        @Override
                        public void run(final Host dcHost) {
                            for (final ServiceInfo si : selectedServiceInfos) {
                                if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                    continue;
                                }
                                si.migrateFromResource(dcHost, hostName, Application.RunMode.TEST);
                            }
                        }
                    });
            pcmkMultiSelectionInfo.addMouseOverListener(migrateFromMenuItem, migrateItemCallback);
            items.add(migrateFromMenuItem);
        }

        /* unmigrate resource */
        final ComponentWithTest unmigrateMenuItem =
                menuFactory.createMenuItem(
                        Tools.getString("PcmkMultiSelectionInfo.UnmigrateResource"),
                        ServiceInfo.UNMIGRATE_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    if (!getBrowser().crmStatusFailed()
                                            && si.getService().isAvailable()
                                            && (si.getMigratedTo(Application.RunMode.LIVE) != null
                                            || si.getMigratedFrom(Application.RunMode.LIVE) != null)) {
                                    } else {
                                        return false;
                                    }
                                }
                                return true;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                pcmkMultiSelectionInfo.hidePopup();
                                final Host dcHost = getBrowser().getDCHost();
                                for (final ServiceInfo si : selectedServiceInfos) {
                                    if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                        continue;
                                    }
                                    si.unmigrateResource(dcHost, Application.RunMode.LIVE);
                                }
                            }
                        });
        final ButtonCallback unmigrateItemCallback = getBrowser().new ClMenuItemCallback(null)
                .addAction(new CallbackAction() {
                    @Override
                    public void run(final Host dcHost) {
                        for (final ServiceInfo si : selectedServiceInfos) {
                            if (si.isConstraintPlaceholder() || si.getService().isNew() || si.getService().isOrphaned()) {
                                continue;
                            }
                            si.unmigrateResource(dcHost, Application.RunMode.TEST);
                        }
                    }
                });
        pcmkMultiSelectionInfo.addMouseOverListener(unmigrateMenuItem, unmigrateItemCallback);
        items.add((UpdatableItem) unmigrateMenuItem);
        /* remove service */
        final ComponentWithTest removeMenuItem = menuFactory.createMenuItem(
                Tools.getString("PcmkMultiSelectionInfo.RemoveService"),
                ClusterBrowser.REMOVE_ICON,
                ClusterBrowser.STARTING_PTEST_TOOLTIP,
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
View Full Code Here

        final CloneInfo ci = serviceInfo.getCloneInfo();
        if (ci == null) {
            addDependencyMenuItems(serviceInfo, items, false, runMode);
        }
        /* start resource */
        final ComponentWithTest startMenuItem = menuFactory.createMenuItem(
                        Tools.getString("ClusterBrowser.Hb.StartResource"),
                        ServiceInfo.START_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (serviceInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                } else if (serviceInfo.isStarted(runMode)) {
                                    return Tools.getString("ServiceInfo.AlreadyStarted");
                                } else {
                                    return serviceInfo.getService().isAvailableWithText();
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                serviceInfo.hidePopup();
                                serviceInfo.startResource(serviceInfo.getBrowser().getDCHost(), runMode);
                            }
                        });
        final ButtonCallback startItemCallback = serviceInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                serviceInfo.startResource(dcHost, Application.RunMode.TEST);
                            }
                        });
        serviceInfo.addMouseOverListener(startMenuItem, startItemCallback);
        items.add((UpdatableItem) startMenuItem);

        /* stop resource */
        final ComponentWithTest stopMenuItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.StopResource"),
                        ServiceInfo.STOP_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (serviceInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                } else if (serviceInfo.isStopped(runMode)) {
                                    return Tools.getString("ServiceInfo.AlreadyStopped");
                                } else {
                                    return serviceInfo.getService().isAvailableWithText();
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                serviceInfo.hidePopup();
                                serviceInfo.stopResource(serviceInfo.getBrowser().getDCHost(), runMode);
                            }
                        });
        final ButtonCallback stopItemCallback = serviceInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                serviceInfo.stopResource(dcHost, Application.RunMode.TEST);
                            }
                        });
        serviceInfo.addMouseOverListener(stopMenuItem, stopItemCallback);
        items.add((UpdatableItem) stopMenuItem);

        /* up group resource */
        final ComponentWithTest upMenuItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.UpResource"),
                        ServiceInfo.GROUP_UP_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return serviceInfo.getGroupInfo() != null;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (serviceInfo.getResource().isNew()) {
                                    return ServiceInfo.IS_NEW_STRING;
                                }
                                final GroupInfo gi = serviceInfo.getGroupInfo();
                                if (gi == null) {
                                    return "no";
                                }
                                if (serviceInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                final DefaultMutableTreeNode giNode = gi.getNode();
                                if (giNode == null) {
                                    return "no";
                                }
                                final DefaultMutableTreeNode node = serviceInfo.getNode();
                                if (node == null) {
                                    return "no";
                                }
                                final int index = treeMenuController.getIndex(giNode, node);
                                if (index == 0) {
                                    return "already up";
                                }
                                return null;
                            }
                        })

                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                serviceInfo.hidePopup();
                                serviceInfo.upResource(serviceInfo.getBrowser().getDCHost(), runMode);
                            }
                        });
        final ButtonCallback upItemCallback =
                serviceInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                serviceInfo.upResource(dcHost, Application.RunMode.TEST);
                            }
                        });
        serviceInfo.addMouseOverListener(upMenuItem, upItemCallback);
        items.add((UpdatableItem) upMenuItem);

        /* down group resource */
        final ComponentWithTest downMenuItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.DownResource"),
                        ServiceInfo.GROUP_DOWN_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .visiblePredicate(new VisiblePredicate() {
                            @Override
                            public boolean check() {
                                return serviceInfo.getGroupInfo() != null;
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (serviceInfo.getResource().isNew()) {
                                    return ServiceInfo.IS_NEW_STRING;
                                }
                                final GroupInfo gi = serviceInfo.getGroupInfo();
                                if (gi == null) {
                                    return "no";
                                }
                                if (serviceInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                final DefaultMutableTreeNode giNode = gi.getNode();
                                if (giNode == null) {
                                    return "no";
                                }
                                final DefaultMutableTreeNode node = serviceInfo.getNode();
                                if (node == null) {
                                    return "no";
                                }
                                final int index = treeMenuController.getIndex(giNode, node);
                                final int groupChildCount = treeMenuController.getChildCount(giNode);
                                if (index >= groupChildCount - 1) {
                                    return "already down";
                                }
                                return null;
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                serviceInfo.hidePopup();
                                serviceInfo.downResource(serviceInfo.getBrowser().getDCHost(), runMode);
                            }
                        });
        final ButtonCallback downItemCallback = serviceInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                serviceInfo.downResource(dcHost, Application.RunMode.TEST);
                            }
                        });
        serviceInfo.addMouseOverListener(downMenuItem, downItemCallback);
        items.add((UpdatableItem) downMenuItem);

        /* clean up resource */
        final UpdatableItem cleanupMenuItem = menuFactory.createMenuItem(
                        Tools.getString("ClusterBrowser.Hb.CleanUpFailedResource"),
                        ServiceInfo.SERVICE_RUNNING_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        Tools.getString("ClusterBrowser.Hb.CleanUpResource"),
                        ServiceInfo.SERVICE_RUNNING_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))

                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                return serviceInfo.getService().isAvailable() && serviceInfo.isOneFailed(runMode);
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (serviceInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                } else if (!serviceInfo.isOneFailedCount(runMode)) {
                                    return "no fail count";
                                } else {
                                    return serviceInfo.getService().isAvailableWithText();
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                serviceInfo.hidePopup();
                                serviceInfo.cleanupResource(serviceInfo.getBrowser().getDCHost(), runMode);
                            }
                        });
        /* cleanup ignores CIB_file */
        items.add(cleanupMenuItem);

        /* manage resource */
        final ComponentWithTest manageMenuItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.ManageResource"),
                        ServiceInfo.MANAGE_BY_CRM_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        Tools.getString("ClusterBrowser.Hb.UnmanageResource"),
                        ServiceInfo.UNMANAGE_BY_CRM_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,

                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .predicate(new Predicate() {
                            @Override
                            public boolean check() {
                                return !serviceInfo.isManaged(runMode);
                            }
                        })
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (serviceInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                } else {
                                    return serviceInfo.getService().isAvailableWithText();
                                }
                            }
                        })
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                serviceInfo.hidePopup();
                                if (text.equals(Tools.getString("ClusterBrowser.Hb.ManageResource"))) {
                                    serviceInfo.setManaged(true, serviceInfo.getBrowser().getDCHost(), runMode);
                                } else {
                                    serviceInfo.setManaged(false, serviceInfo.getBrowser().getDCHost(), runMode);
                                }
                            }
                        });
        final ButtonCallback manageItemCallback =
                serviceInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                serviceInfo.setManaged(!serviceInfo.isManaged(Application.RunMode.TEST),
                                                       dcHost,
                                                       Application.RunMode.TEST);
                            }
                        });
        serviceInfo.addMouseOverListener(manageMenuItem, manageItemCallback);
        items.add((UpdatableItem) manageMenuItem);
        addMigrateMenuItems(serviceInfo, items);
        if (ci == null) {
            /* remove service */
            final ComponentWithTest removeMenuItem = menuFactory.createMenuItem(
                    Tools.getString("ClusterBrowser.Hb.RemoveService"),
                    ClusterBrowser.REMOVE_ICON,
                    ClusterBrowser.STARTING_PTEST_TOOLTIP,
                    new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                    new AccessMode(AccessMode.OP, AccessMode.NORMAL))
View Full Code Here

            serviceInfo.addMouseOverListener(migrateFromMenuItem, migrateItemCallback);
            items.add(migrateFromMenuItem);
        }

        /* unmigrate resource */
        final ComponentWithTest unmigrateMenuItem =
                menuFactory.createMenuItem(
                        Tools.getString("ClusterBrowser.Hb.UnmigrateResource"),
                        ServiceInfo.UNMIGRATE_ICON,
                        ClusterBrowser.STARTING_PTEST_TOOLTIP,
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
View Full Code Here

     */
    @Override
    public final List<UpdatableItem> createPopup() {
        final List<UpdatableItem> items = new ArrayList<UpdatableItem>();
        /* remove service */
        final ComponentWithTest removeMenuItem = menuFactory.createMenuItem(
                Tools.getString("HardwareInfo.Menu.Remove"),
                ClusterBrowser.REMOVE_ICON,
                ClusterBrowser.STARTING_PTEST_TOOLTIP,
                Tools.getString("HardwareInfo.Menu.Cancel"),
                ClusterBrowser.REMOVE_ICON,
View Full Code Here

TOP

Related Classes of lcmc.common.ui.utils.ComponentWithTest

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.