Package lcmc.common.domain

Examples of lcmc.common.domain.AccessMode


                                     sourceFile,
                                     getParamPossibleChoices(param),
                                     regexp,
                                     width,
                                     Widget.NO_ABBRV,
                                     new AccessMode(getAccessType(param),
                                                    AccessMode.NORMAL),
                                     fileChooserBtn);
            paramWi.setAlwaysEditable(true);
            sourceFileWi.put(prefixS, paramWi);
            if (Tools.isWindows()) {
View Full Code Here


        /* remove the placeholder and all constraints associated with it. */
        final MyMenuItem removeMenuItem = menuFactory.createMenuItem(
                Tools.getString("ConstraintPHInfo.Remove"),
                ClusterBrowser.REMOVE_ICON,
                ClusterBrowser.STARTING_PTEST_TOOLTIP,
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (constraintPHInfo.getBrowser().crmStatusFailed()) {
                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
View Full Code Here

        /* add group */
        final MyMenuItem addGroupMenuItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.AddGroup"),
                        null,
                        null,
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (servicesInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                return null;
                            }
                        });
        addGroupMenuItem.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                servicesInfo.hidePopup();
                servicesInfo.addServicePanel(
                        servicesInfo.getBrowser().getCrmXml().getGroupResourceAgent(),
                        addGroupMenuItem.getPos(),
                        true,
                        null,
                        null,
                        runMode);
                servicesInfo.getBrowser().getCrmGraph().repaint();
            }
        });
        items.add(addGroupMenuItem);

        /* add service */
        final MyMenu addServiceMenuItem = menuFactory.createMenu(
                Tools.getString("ClusterBrowser.Hb.AddService"),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (servicesInfo.getBrowser().getCrmXml() == null) {
                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                        }
                        if (servicesInfo.getBrowser().crmStatusFailed()) {
                            return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                        }
                        return null;
                    }
                });
        addServiceMenuItem.onUpdate(new Runnable() {
            @Override
            public void run() {
                application.isSwingThread();
                addServiceMenuItem.removeAll();
                final Point2D pos = addServiceMenuItem.getPos();
                final CrmXml crmXML = servicesInfo.getBrowser().getCrmXml();
                if (crmXML == null) {
                    return;
                }
                final ResourceAgent fsService = crmXML.getResourceAgent(
                        "Filesystem",
                        ResourceAgent.HEARTBEAT_PROVIDER,
                        ResourceAgent.OCF_CLASS_NAME);
                if (crmXML.isLinbitDrbdResourceAgentPresent()) { /* just skip it, if it is not */
                    final MyMenuItem ldMenuItem = menuFactory.createMenuItem(
                            Tools.getString("ClusterBrowser.linbitDrbdMenuName"),
                            null,
                            null,
                            new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                            .addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    servicesInfo.hidePopup();
                                    if (!servicesInfo.getBrowser().linbitDrbdConfirmDialog()) {
                                        return;
                                    }

                                    final FilesystemRaInfo fsi = (FilesystemRaInfo) servicesInfo.addServicePanel(
                                                    fsService,
                                                    addServiceMenuItem.getPos(),
                                                    true,
                                                    null,
                                                    null,
                                                    runMode);
                                    fsi.setDrbddiskIsPreferred(false);
                                    servicesInfo.getBrowser().getCrmGraph().repaint();
                                }
                            });
                    if (servicesInfo.getBrowser().atLeastOneDrbddiskConfigured()
                            || !crmXML.isLinbitDrbdResourceAgentPresent()) {
                        ldMenuItem.setEnabled(false);
                    }
                    ldMenuItem.setPos(pos);
                    addServiceMenuItem.add(ldMenuItem);
                }
                final ResourceAgent ipService = crmXML.getResourceAgent(
                        "IPaddr2",
                        ResourceAgent.HEARTBEAT_PROVIDER,
                        ResourceAgent.OCF_CLASS_NAME);
                if (ipService != null) { /* just skip it, if it is not*/
                    final MyMenuItem ipMenuItem =
                            menuFactory.createMenuItem(ipService.getPullDownMenuName(),
                                    null,
                                    null,
                                    new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                                    new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                                    .addAction(new MenuAction() {
                                        @Override
                                        public void run(final String text) {
                                            servicesInfo.hidePopup();
                                            servicesInfo.addServicePanel(ipService,
                                                    addServiceMenuItem.getPos(),
                                                    true,
                                                    null,
                                                    null,
                                                    runMode);
                                            servicesInfo.getBrowser().getCrmGraph().repaint();
                                        }
                                    });
                    ipMenuItem.setPos(pos);
                    addServiceMenuItem.add(ipMenuItem);
                }
                if (crmXML.isDrbddiskResourceAgentPresent()
                        && (servicesInfo.getBrowser().isDrbddiskRAPreferred()
                        || servicesInfo.getBrowser().atLeastOneDrbddiskConfigured()
                        || !crmXML.isLinbitDrbdResourceAgentPresent())) {
                    final MyMenuItem ddMenuItem = menuFactory.createMenuItem(
                            Tools.getString("ClusterBrowser.DrbddiskMenuName"),
                            null,
                            null,
                            new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                            new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                            .addAction(new MenuAction() {
                                @Override
                                public void run(final String text) {
                                    servicesInfo.hidePopup();
                                    final FilesystemRaInfo fsi = (FilesystemRaInfo) servicesInfo.addServicePanel(
                                            fsService,
                                            addServiceMenuItem.getPos(),
                                            true,
                                            null,
                                            null,
                                            runMode);
                                    fsi.setDrbddiskIsPreferred(true);
                                    servicesInfo.getBrowser().getCrmGraph().repaint();
                                }
                            });
                    if (servicesInfo.getBrowser().isOneLinbitDrbdRaConfigured()
                            || !crmXML.isDrbddiskResourceAgentPresent()) {
                        ddMenuItem.setEnabled(false);
                    }
                    ddMenuItem.setPos(pos);
                    addServiceMenuItem.add(ddMenuItem);
                }
                final Collection<JDialog> popups = new ArrayList<JDialog>();
                for (final String cl : ClusterBrowser.CRM_CLASSES) {
                    final List<ResourceAgent> services = servicesInfo.getAddServiceList(cl);
                    if (services.isEmpty()) {
                        /* no services, don't show */
                        continue;
                    }
                    AccessMode.Mode mode = AccessMode.NORMAL;
                    if (ResourceAgent.UPSTART_CLASS_NAME.equals(cl) || ResourceAgent.SYSTEMD_CLASS_NAME.equals(cl)) {
                        mode = AccessMode.ADVANCED;
                    }
                    if (ResourceAgent.LSB_CLASS_NAME.equals(cl)
                            && !servicesInfo.getAddServiceList(ResourceAgent.SERVICE_CLASS_NAME).isEmpty()) {
                        mode = AccessMode.ADVANCED;
                    }
                    final MyMenu classItem =
                            menuFactory.createMenu(ClusterBrowser.getClassMenuName(cl),
                                    new AccessMode(AccessMode.ADMIN, mode),
                                    new AccessMode(AccessMode.OP, mode));
                    final MyListModel<MyMenuItem> dlm = new MyListModel<MyMenuItem>();
                    for (final ResourceAgent ra : services) {
                        final MyMenuItem mmi = menuFactory.createMenuItem(
                                ra.getPullDownMenuName(),
                                null,
                                null,
                                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                                .addAction(new MenuAction() {
                                    @Override
                                    public void run(final String text) {
                                        servicesInfo.hidePopup();
                                        application.invokeLater(new Runnable() {
                                            @Override
                                            public void run() {
                                                for (final JDialog otherP : popups) {
                                                    otherP.dispose();
                                                }
                                            }
                                        });
                                        if (ra.isLinbitDrbd() && !servicesInfo.getBrowser().linbitDrbdConfirmDialog()) {
                                            return;
                                        } else if (ra.isHbDrbd() && !servicesInfo.getBrowser().hbDrbdConfirmDialog()) {
                                            return;
                                        }
                                        servicesInfo.addServicePanel(ra,
                                                addServiceMenuItem.getPos(),
                                                true,
                                                null,
                                                null,
                                                runMode);
                                        servicesInfo.getBrowser().getCrmGraph().repaint();
                                    }
                                });
                        mmi.setPos(pos);
                        dlm.addElement(mmi);
                    }
                    final boolean ret = guiData.getScrollingMenu(
                            ClusterBrowser.getClassMenuName(cl),
                            null, /* options */
                            classItem,
                            dlm,
                            new MyList<MyMenuItem>(dlm, addServiceMenuItem.getBackground()),
                            servicesInfo,
                            popups,
                            null);
                    if (!ret) {
                        classItem.setEnabled(false);
                    }
                    addServiceMenuItem.add(classItem);
                }
                addServiceMenuItem.updateMenuComponents();
                addServiceMenuItem.processAccessMode();
            }
        });
        items.add(addServiceMenuItem);

        /* add constraint placeholder (and) */
        final MyMenuItem addConstraintPlaceholderAnd =
                menuFactory.createMenuItem(Tools.getString("ServicesInfo.AddConstraintPlaceholderAnd"),
                        null,
                        Tools.getString("ServicesInfo.AddConstraintPlaceholderAnd.ToolTip"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                if (servicesInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                return null;
                            }
                        });
        addConstraintPlaceholderAnd.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                servicesInfo.hidePopup();
                final CrmGraph hg = servicesInfo.getBrowser().getCrmGraph();
                final ConstraintPHInfo constraintPHInfo = constraintPHInfoProvider.get();
                constraintPHInfo.init(servicesInfo.getBrowser(), null, ConstraintPHInfo.Preference.AND);
                constraintPHInfo.getService().setNew(true);
                servicesInfo.getBrowser().addNameToServiceInfoHash(constraintPHInfo);
                hg.addConstraintPlaceholder(constraintPHInfo, addConstraintPlaceholderAnd.getPos(), runMode);
                final PcmkRscSetsInfo rscSetsInfo = rscSetsInfoProvider.get();
                rscSetsInfo.init(servicesInfo.getBrowser(), constraintPHInfo);
                constraintPHInfo.setPcmkRscSetsInfo(rscSetsInfo);
                application.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        hg.scale();
                    }
                });
            }
        });
        items.add(addConstraintPlaceholderAnd);

        /* add constraint placeholder (or) */
        final MyMenuItem addConstraintPlaceholderOr =
                menuFactory.createMenuItem(Tools.getString("ServicesInfo.AddConstraintPlaceholderOr"),
                        null,
                        Tools.getString("ServicesInfo.AddConstraintPlaceholderOr.ToolTip"),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                        .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                                final String pmV = servicesInfo.getBrowser().getDCHost().getPacemakerVersion();
                                try {
                                    //TODO: get this from constraints-.rng files
                                    if (pmV == null || Tools.compareVersions(pmV, "1.1.7") <= 0) {
                                        return HbOrderInfo.NOT_AVAIL_FOR_PCMK_VERSION;
                                    }
                                } catch (final Exceptions.IllegalVersionException e) {
                                    LOG.appWarning("enablePredicate: unkonwn version: " + pmV);
                        /* enable it, if version check doesn't work */
                                }
                                if (servicesInfo.getBrowser().crmStatusFailed()) {
                                    return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
                                }
                                return null;
                            }
                        });
        addConstraintPlaceholderOr.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                servicesInfo.hidePopup();
                final CrmGraph hg = servicesInfo.getBrowser().getCrmGraph();
                final ConstraintPHInfo constraintPHInfo = constraintPHInfoProvider.get();
                constraintPHInfo.init(servicesInfo.getBrowser(), null, ConstraintPHInfo.Preference.OR);
                constraintPHInfo.getService().setNew(true);
                servicesInfo.getBrowser().addNameToServiceInfoHash(constraintPHInfo);
                hg.addConstraintPlaceholder(constraintPHInfo, addConstraintPlaceholderOr.getPos(), runMode);
                final PcmkRscSetsInfo rscSetsInfo = rscSetsInfoProvider.get();
                rscSetsInfo.init(servicesInfo.getBrowser(), constraintPHInfo);
                constraintPHInfo.setPcmkRscSetsInfo(rscSetsInfo);
                application.invokeLater(new Runnable() {
                    @Override
                    public void run() {
                        hg.scale();
                    }
                });
            }
        });
        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() {
                    @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.getGroupInfo() == null) {
                                if (si.isRunning(Application.RunMode.LIVE)) {
                                    return "there are running services";
                                }
                            }
                        }
                        return null;
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        servicesInfo.hidePopup();
                        if (application.confirmDialog(
                                Tools.getString("ClusterBrowser.confirmRemoveAllServices.Title"),
                                Tools.getString("ClusterBrowser.confirmRemoveAllServices.Description"),
                                Tools.getString("ClusterBrowser.confirmRemoveAllServices.Yes"),
                                Tools.getString("ClusterBrowser.confirmRemoveAllServices.No"))) {
                            final Thread t = new Thread() {
                                @Override
                                public void run() {
                                    final Host dcHost = servicesInfo.getBrowser().getDCHost();
                                    final List<ServiceInfo> services = servicesInfo.getBrowser().getExistingServiceList(null);
                                    for (final ServiceInfo si : services) {
                                        if (si.getGroupInfo() == null) {
                                            final ResourceAgent ra = si.getResourceAgent();
                                            if (ra != null && !ra.isClone()) {
                                                si.getService().setRemoved(true);
                                            }
                                        }
                                    }
                                    CRM.erase(dcHost, runMode);
                                    for (final ServiceInfo si : services) {
                                        if (si.getGroupInfo() == null) {
                                            final ResourceAgent ra = si.getResourceAgent();
                                            if (si.getService().isNew()) {
                                                si.removeMyself(runMode);
                                            } else if (ra != null && !ra.isClone()) {
                                                si.cleanupResource(dcHost, Application.RunMode.LIVE);
                                            }
                                        }
                                    }
                                    servicesInfo.getBrowser().getCrmGraph().repaint();
                                }
                            };
                            t.start();
                        }
                    }
                });
        final ButtonCallback removeItemCallback =
                servicesInfo.getBrowser().new ClMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                CRM.erase(dcHost, Application.RunMode.TEST);
                            }
                        });
        servicesInfo.addMouseOverListener(removeMenuItem, removeItemCallback);
        items.add((UpdatableItem) removeMenuItem);

        /* cluster wizard */
        final UpdatableItem clusterWizardItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.ClusterWizard"),
                        ServicesInfo.CLUSTER_ICON,
                        null,
                        new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                        new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                editClusterDialog.showDialogs(servicesInfo.getBrowser().getCluster());
                            }
                        });
        items.add(clusterWizardItem);

        /* view logs */
        final UpdatableItem viewLogsItem =
                menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.ViewLogs"),
                        ServicesInfo.LOGFILE_ICON,
                        null,
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                        new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                        .addAction(new MenuAction() {
                            @Override
                            public void run(final String text) {
                                final ClusterLogs clusterLogs = clusterLogsProvider.get();
                                clusterLogs.init(servicesInfo.getBrowser().getCluster());
View Full Code Here

                                               submenu,
                                               KeyEvent.VK_L,
                                               KeyEvent.VK_L,
                                               loadActionListener(),
                                               null);
        guiData.addToEnabledInAccessType(loadItem, new AccessMode(AccessMode.GOD, AccessMode.NORMAL));

        final JMenuItem item = addMenuItem(Tools.getString("MainMenu.RemoveEverything"),
                                           submenu,
                                           0,
                                           0,
                                           removeEverythingActionListener(),
                                           null);
        guiData.addToVisibleInAccessType(item, new AccessMode(AccessMode.GOD, AccessMode.NORMAL));

        addMenuItem(Tools.getString("MainMenu.Save"),
                    submenu,
                    KeyEvent.VK_S,
                    0,
                    saveActionListener(),
                    null);

        addMenuItem(Tools.getString("MainMenu.SaveAs"),
                    submenu,
                    KeyEvent.VK_A,
                    0,
                    saveAsActionListener(),
                    null);

        submenu.addSeparator();
        if (!guiData.isApplet()) {
            addMenuItem(Tools.getString("MainMenu.Exit"),
                        submenu,
                        KeyEvent.VK_X,
                        KeyEvent.VK_X,
                        exitActionListener(),
                        null);
        }
        menuBar.add(submenu);

        /* settings */
        submenu = addMenu(Tools.getString("MainMenu.Settings"), 0);
        guiData.addToVisibleInAccessType(submenu, new AccessMode(AccessMode.GOD, AccessMode.NORMAL));
        final JMenu menuLookAndFeel = addMenu(Tools.getString("MainMenu.LookAndFeel"), 0);
        final UIManager.LookAndFeelInfo[] lookAndFeels = UIManager.getInstalledLookAndFeels();
        for (final UIManager.LookAndFeelInfo lookAndFeel : lookAndFeels) {
            final String className = lookAndFeel.getClassName();
            final String classNamePart = className.substring(className.lastIndexOf('.') + 1);
View Full Code Here

                                      MCAST_TYPE,
                                      types,
                                      Widget.NO_REGEXP,
                                      TYPE_COMBOBOX_WIDTH,
                                      Widget.NO_ABBRV,
                                      new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                                      Widget.NO_BUTTON);

        final NetInterface[] ni = netInterfaceService.getNetInterfacesWithBridges(hosts[0]);
        NetInterface defaultNi = null;
        for (final NetInterface n : ni) {
            /* skip lo */
            if (!n.isLocalHost()) {
                defaultNi = n;
                break;
            }
        }
        if (defaultNi == null) {
            LOG.appError("getInputPane: " + hosts[0].getName() + ": missing network interfaces");
        }
        ifaceWidget = widgetFactory.createInstance(Widget.Type.COMBOBOX,
                                                   defaultNi,
                                                   ni,
                                                   Widget.NO_REGEXP,
                                                   INTERFACE_COMBOBOX_WIDTH,
                                                   Widget.NO_ABBRV,
                                                   new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                                                   Widget.NO_BUTTON);

        /* ucast links */
        final List<UcastLink> ulList = new ArrayList<UcastLink>();
        for (final Host host : hosts) {
            final NetInterface[] netInterfaces = netInterfaceService.getNetInterfacesWithBridges(host);
            for (final NetInterface n : netInterfaces) {
                ulList.add(new UcastLink(host, n));
            }
        }
        final UcastLink[] ucastLinks = ulList.toArray(new UcastLink[ulList.size()]);

        ucastLink1Widget = widgetFactory.createInstance(
                                             Widget.GUESS_TYPE,
                                             Widget.NO_DEFAULT,
                                             ucastLinks,
                                             Widget.NO_REGEXP,
                                             LINK_COMBOBOX_WIDTH,
                                             Widget.NO_ABBRV,
                                             new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                                             Widget.NO_BUTTON);
        ucastLink2Widget = widgetFactory.createInstance(
                                             Widget.GUESS_TYPE,
                                             Widget.NO_DEFAULT,
                                             ucastLinks,
                                             Widget.NO_REGEXP,
                                             LINK_COMBOBOX_WIDTH,
                                             Widget.NO_ABBRV,
                                             new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                                             Widget.NO_BUTTON);

        /* serial links */
        final Value[] serialDevs = {new StringValue("/dev/ttyS0"),
                                    new StringValue("/dev/ttyS1"),
                                    new StringValue("/dev/ttyS2"),
                                    new StringValue("/dev/ttyS3")};

        serialWidget = widgetFactory.createInstance(
                                             Widget.GUESS_TYPE,
                                             Widget.NO_DEFAULT,
                                             serialDevs,
                                             Widget.NO_REGEXP,
                                             LINK_COMBOBOX_WIDTH,
                                             Widget.NO_ABBRV,
                                             new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                                             Widget.NO_BUTTON);

        /* this matches something like this: 225.0.0.43 694 1 0
         * if you think that the regexp is too complicated for that, consider,
         * that it must match also during the thing is written.
         * TODO: it does not work very good anyway
         */
        final String regexp = "^\\d{1,3}(\\.\\d{0,3}(\\d\\.\\d{0,3}"
                              + "(\\d\\.\\d{0,3})( \\d{0,3}(\\d \\d{0,3}"
                              + "(\\d \\d{0,3})?)?)?)?)?$";
        addrWidget = widgetFactory.createInstance(
                                     Widget.GUESS_TYPE,
                                     new StringValue("239.192.0.0 694 1 0"),
                                     Widget.NO_ITEMS,
                                     regexp,
                                     ADDR_COMBOBOX_WIDTH,
                                     Widget.NO_ABBRV,
                                     new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                                     Widget.NO_BUTTON);

        typeWidget.addListeners(
                new WidgetListener() {
                    @Override
                    public void check(final Value value) {
                        final Value type = typeWidget.getValue();
                        if (type != null) {
                            if (MCAST_TYPE.equals(type) || BCAST_TYPE.equals(type)) {
                                ifaceWidget.setVisible(true);
                            } else {
                                ifaceWidget.setVisible(false);
                            }

                            if (MCAST_TYPE.equals(type)) {
                                addrWidget.setVisible(true);
                            } else {
                                addrWidget.setVisible(false);
                            }
                            if (SERIAL_TYPE.equals(type)) {
                                serialWidget.setVisible(true);
                            } else {
                                serialWidget.setVisible(false);
                            }
                            if (UCAST_TYPE.equals(type)) {
                                ucastLink1Widget.setVisible(true);
                                ucastLink2Widget.setVisible(true);
                            } else {
                                ucastLink1Widget.setVisible(false);
                                ucastLink2Widget.setVisible(false);
                            }
                            application.invokeLater(new Runnable() {
                                @Override
                                public void run() {
                                    mcastPanel.setMaximumSize(mcastPanel.getPreferredSize());
                                }
                            });
                            checkInterface();
                        }
                    }
                });

        ifaceWidget.addListeners(new WidgetListener() {
            @Override
            public void check(final Value value) {
                checkInterface();
            }
        });

        serialWidget.setVisible(false);

        serialWidget.addListeners(new WidgetListener() {
            @Override
            public void check(final Value value) {
                checkInterface();
            }
        });

        ucastLink1Widget.setVisible(false);
        ucastLink2Widget.setVisible(false);

        ucastLink1Widget.addListeners(new WidgetListener() {
            @Override
            public void check(final Value value) {
                checkInterface();
            }
        });
        ucastLink2Widget.addListeners(new WidgetListener() {
            @Override
            public void check(final Value value) {
                checkInterface();
            }
        });
        addrWidget.addListeners(new WidgetListener() {
            @Override
            public void check(final Value value) {
                checkInterface();
            }
        });

        addAddressButton = widgetFactory.createButton(Tools.getString("Dialog.Cluster.HbConfig.AddIntButton"));
        addAddressButton.setBackgroundColor(Tools.getDefaultColor("ConfigDialog.Button"));
        addAddressButton.addActionListener(
                new ActionListener() {
                    @Override
                    public void actionPerformed(final ActionEvent e) {
                        final Value type = typeWidget.getValue();
                        final Thread thread = new Thread(new Runnable() {
                            @Override
                            public void run() {
                                addInterface(type);
                            }
                        });
                        thread.start();
                    }
                });

        configScrollPane = new JScrollPane(configPanel,
                                           JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
                                           JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        configScrollPane.setPreferredSize(new Dimension(Short.MAX_VALUE, 150));
        statusPanel = new JPanel();
        statusPanel.add(configStatus);
        configCheckbox = new JCheckBox("-----", true);
        configCheckbox.setBackground(Tools.getDefaultColor("ConfigDialog.Background.Light"));
        guiData.setAccessible(configCheckbox, AccessMode.ADMIN);
        configCheckbox.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(final ItemEvent e) {
                final String text = configCheckbox.getText();
                if (e.getStateChange() == ItemEvent.SELECTED) {
                    final Thread thread = new Thread(new Runnable() {
                        @Override
                        public void run() {
                            if (EDIT_CONFIG_STRING.equals(text)) {
                                updateConfigPanelEditable(configChangedByUser);
                                application.invokeLater(new Runnable() {
                                    @Override
                                    public void run() {
                                        configCheckbox.setText(SEE_EXISTING_STRING);
                                        configCheckbox.setSelected(false);
                                        statusPanel.setMaximumSize(statusPanel.getPreferredSize());
                                    }
                                });
                            } else if (SEE_EXISTING_STRING.equals(text)) {
                                updateConfigPanelExisting();
                                application.invokeLater(new Runnable() {
                                    @Override
                                    public void run() {
                                        configCheckbox.setText(EDIT_CONFIG_STRING);
                                        configCheckbox.setSelected(false);
                                        statusPanel.setMaximumSize(statusPanel.getPreferredSize());
                                    }
                                });
                            }
                        }
                    });
                    thread.start();
                }
            }
        });
        statusPanel.add(configCheckbox);
        statusPanel.setAlignmentX(java.awt.Component.LEFT_ALIGNMENT);
        pane.add(statusPanel);
        pane.add(configScrollPane);
        configScrollPane.setAlignmentX(java.awt.Component.LEFT_ALIGNMENT);
        mcastPanel = new JPanel(new FlowLayout(FlowLayout.LEADING));
        mcastPanel.setBackground(Tools.getDefaultColor("ConfigDialog.Background"));
        mcastPanel.add(new JLabel("# "));
        mcastPanel.add(typeWidget.getComponent());
        mcastPanel.add(ifaceWidget.getComponent());
        mcastPanel.add(addrWidget.getComponent());
        mcastPanel.add(serialWidget.getComponent());
        mcastPanel.add(ucastLink1Widget.getComponent());
        mcastPanel.add(ucastLink2Widget.getComponent());
        mcastPanel.add(addAddressButton);
        mcastPanel.setMaximumSize(mcastPanel.getPreferredSize());
        mcastPanel.setAlignmentX(java.awt.Component.LEFT_ALIGNMENT);
        for (final String option : OPTIONS) {
            final int size;
            if (OPTION_SIZES.containsKey(option)) {
                size = OPTION_SIZES.get(option);
            } else {
                size = 40;
            }
            final Widget w = widgetFactory.createInstance(
                    OPTION_WIDGET_TYPES.get(option),
                    optionDefaults.get(option),
                    optionValues.get(option),
                    '^' + OPTION_REGEXPS.get(option) + "\\s*$",
                    size,
                    Widget.NO_ABBRV,
                    new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                    Widget.NO_BUTTON);
            optionsWidgets.put(option, w);
            w.setAlwaysEditable(true);
            w.addListeners(getOptionListener());
        }
View Full Code Here

        /** Add proxy host */
        final UpdatableItem addProxyHostMenu = menuFactory.createMenuItem(
                Tools.getString("GlobalInfo.AddProxyHost"),
                null,
                Tools.getString("GlobalInfo.AddProxyHost"),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        addProxyHostWizard(globalInfo);
                    }
                });
        items.add(addProxyHostMenu);

        /* cluster wizard */
        final UpdatableItem clusterWizardItem = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Hb.ClusterWizard"),
                GlobalInfo.CLUSTER_ICON,
                null,
                new AccessMode(AccessMode.ADMIN, AccessMode.ADVANCED),
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        final EditClusterDialog editClusterDialog = editClusterDialogProvider.get();
                        editClusterDialog.showDialogs(globalInfo.getBrowser().getCluster());
                    }
                });
        items.add(clusterWizardItem);

        /* Rescan LVM */
        final UpdatableItem rescanLvmItem = menuFactory.createMenuItem(
                Tools.getString("GlobalInfo.RescanLvm"),
                null, /* icon */
                null,
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.ADVANCED))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        globalInfo.getBrowser().updateHWInfo(Host.UPDATE_LVM);
                    }
                });
        items.add(rescanLvmItem);

        /* view log */
        final UpdatableItem viewLogMenu = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Drbd.ViewLogs"),
                GlobalInfo.LOGFILE_ICON,
                null,
                new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        globalInfo.hidePopup();
                        final DrbdLogs drbdLogs = drbdLogsProvider.get();
View Full Code Here

                Tools.getString("ClusterBrowser.Drbd.ResourceConnect.ToolTip"),

                Tools.getString("ClusterBrowser.Drbd.ResourceDisconnect") + ' ' + getResourceInfo().getName(),
                null,
                Tools.getString("ClusterBrowser.Drbd.ResourceDisconnect.ToolTip"),
                new AccessMode(AccessMode.OP, AccessMode.ADVANCED),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .predicate(new Predicate() {
                    @Override
                    public boolean check() {
                        return !volumeInfo.isConnectedOrWF(runMode);
                    }
                })
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (!application.isAdvancedMode() && getResourceInfo().isUsedByCRM()) {
                            return VolumeInfo.IS_USED_BY_CRM_STRING;
                        }
                        if (volumeInfo.isSyncing()) {
                            return VolumeInfo.IS_SYNCING_STRING;
                        }
                        return null;
                    }
                });
        connectMenu.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                final BlockDevInfo sourceBDI = getBrowser().getDrbdGraph().getSource(volumeInfo);
                final BlockDevInfo destBDI = getBrowser().getDrbdGraph().getDest(volumeInfo);
                if (connectMenu.getText().equals(
                        Tools.getString("ClusterBrowser.Drbd.ResourceConnect")
                                + ' ' + getResourceInfo().getName())) {
                    if (!destBDI.isConnectedOrWF(runMode)) {
                        destBDI.connect(runMode);
                    }
                    if (!sourceBDI.isConnectedOrWF(runMode)) {
                        sourceBDI.connect(runMode);
                    }
                } else {
                    destBDI.disconnect(runMode);
                    sourceBDI.disconnect(runMode);
                }
            }
        });
        final ButtonCallback connectItemCallback =
                getBrowser().new DRBDMenuItemCallback(null)
                        .addAction(new CallbackAction() {
                            @Override
                            public void run(final Host dcHost) {
                                final BlockDevInfo sourceBDI = getBrowser().getDrbdGraph().getSource(volumeInfo);
                                final BlockDevInfo destBDI = getBrowser().getDrbdGraph().getDest(volumeInfo);
                                final BlockDevInfo bdi;
                                if (sourceBDI.getHost() == dcHost) {
                                    bdi = sourceBDI;
                                } else if (destBDI.getHost() == dcHost) {
                                    bdi = destBDI;
                                } else {
                                    return;
                                }
                                if (sourceBDI.isConnected(Application.RunMode.LIVE) && destBDI.isConnected(Application.RunMode.LIVE)) {
                                    bdi.disconnect(Application.RunMode.TEST);
                                } else {
                                    bdi.connect(Application.RunMode.TEST);
                                }
                            }
                        });
        volumeInfo.addMouseOverListener(connectMenu, connectItemCallback);
        items.add(connectMenu);

        final MyMenuItem resumeSync = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Drbd.ResourceResumeSync"),
                null,
                Tools.getString("ClusterBrowser.Drbd.ResourceResumeSync.ToolTip"),

                Tools.getString("ClusterBrowser.Drbd.ResourcePauseSync"),
                null,
                Tools.getString("ClusterBrowser.Drbd.ResourcePauseSync.ToolTip"),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .predicate(new Predicate() {
                    @Override
                    public boolean check() {
                        return volumeInfo.isPausedSync();
                    }
                })
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (!volumeInfo.isSyncing()) {
                            return "it is not syncing";
                        }
                        return null;
                    }
                });
        resumeSync.addAction(new MenuAction() {
            @Override
            public void run(final String text) {
                final BlockDevInfo sourceBDI = getBrowser().getDrbdGraph().getSource(volumeInfo);
                final BlockDevInfo destBDI = getBrowser().getDrbdGraph().getDest(volumeInfo);
                if (resumeSync.getText().equals(Tools.getString("ClusterBrowser.Drbd.ResourceResumeSync"))) {
                    if (destBDI.getBlockDevice().isPausedSync()) {
                        destBDI.resumeSync(runMode);
                    }
                    if (sourceBDI.getBlockDevice().isPausedSync()) {
                        sourceBDI.resumeSync(runMode);
                    }
                } else {
                    sourceBDI.pauseSync(runMode);
                    destBDI.pauseSync(runMode);
                }
            }
        });
        items.add(resumeSync);
   
        /* resolve split-brain */
        final UpdatableItem splitBrainMenu = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Drbd.ResolveSplitBrain"),
                null,
                Tools.getString("ClusterBrowser.Drbd.ResolveSplitBrain.ToolTip"),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (volumeInfo.isSplitBrain()) {
                            return null;
                        } else {
                            return "";
                        }
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        volumeInfo.resolveSplitBrain();
                    }
                });
        items.add(splitBrainMenu);
   
        /* start online verification */
        final UpdatableItem verifyMenu = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Drbd.Verify"),
                null,
                Tools.getString("ClusterBrowser.Drbd.Verify.ToolTip"),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        if (!volumeInfo.isConnected(runMode)) {
                            return "not connected";
                        }
                        if (volumeInfo.isSyncing()) {
                            return VolumeInfo.IS_SYNCING_STRING;
                        }
                        if (volumeInfo.isVerifying()) {
                            return VolumeInfo.IS_VERIFYING_STRING;
                        }
                        return null;
                    }
                })
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        volumeInfo.verify(runMode);
                    }
                });
        items.add(verifyMenu);
        /* remove resource */
        final UpdatableItem removeResMenu = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Drbd.RemoveEdge"),
                ClusterBrowser.REMOVE_ICON,
                Tools.getString("ClusterBrowser.Drbd.RemoveEdge.ToolTip"),
                new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        /* this resourceInfo remove myself and this calls
                           removeDrbdResource in this class, that removes the edge
                           in the graph. */
                        volumeInfo.removeMyself(runMode);
                    }
                })
                .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        final DrbdXml dxml = getBrowser().getDrbdXml();
                        if (!application.isAdvancedMode() && getResourceInfo().isUsedByCRM()) {
                            return VolumeInfo.IS_USED_BY_CRM_STRING;
                        } else if (dxml.isDrbdDisabled()) {
                            return "disabled because of config";
                        }
                        return null;
                    }
                });
        items.add(removeResMenu);
   
        /* view log */
        final UpdatableItem viewLogMenu = menuFactory.createMenuItem(
                Tools.getString("ClusterBrowser.Drbd.ViewLogs"),
                VolumeInfo.LOGFILE_ICON,
                null,
                new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        volumeInfo.hidePopup();
                        volumeInfo.startDrbdLogsDialog();
View Full Code Here

        /* load drbd */
        final UpdatableItem loadItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.LoadDrbd"),
                           null,
                           Tools.getString("MultiSelectionInfo.LoadDrbd"),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
            .enablePredicate(new EnablePredicate() {
                    @Override
                    public String check() {
                        for (final HostDrbdInfo hi : selectedHostInfos) {
                            if (hi.getHost().isConnected()) {
                                if (hi.getHost().isDrbdLoaded()) {
                                    return "already loaded";
                                }
                            } else {
                                return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                            }
                        }
                        return null;
                    }})
            .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        for (final HostDrbdInfo hi : selectedHostInfos) {
                            DRBD.load(hi.getHost(), Application.RunMode.LIVE);
                        }
                        for (final HostDrbdInfo hi : selectedHostInfos) {
                            getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                        }
                    }});
        items.add(loadItem);

        /* load DRBD config / adjust all */
        final MyMenuItem adjustAllItem =
            menuFactory.createMenuItem(
                   Tools.getString("MultiSelectionInfo.AdjustAllDrbd"),
                   null,
                   Tools.getString("MultiSelectionInfo.AdjustAllDrbd"),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                           new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        if (!hi.getHost().isConnected()) {
                            return Host.NOT_CONNECTED_MENU_TOOLTIP_TEXT;
                        }
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        DRBD.adjustApply(hi.getHost(), DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.LIVE);
                    }
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                    }
                }});
        items.add(adjustAllItem);
        final ButtonCallback adjustAllItemCallback =
               getBrowser().new DRBDMenuItemCallback(getBrowser().getDCHost())
                   .addAction(new CallbackAction() {
                           @Override
                           public void run(final Host host) {
                for (final HostDrbdInfo hi : selectedHostInfos) {
                    DRBD.adjustApply(hi.getHost(), DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                }
            }});
        multiSelectionInfo.addMouseOverListener(adjustAllItem, adjustAllItemCallback);

        /* start drbd */
        final MyMenuItem upAllItem =
            menuFactory.createMenuItem(Tools.getString("MultiSelectionInfo.UpAll"),
                           null,
                           Tools.getString("MultiSelectionInfo.UpAll"),
                           new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
                           new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL))
                    .enablePredicate(new EnablePredicate() {
                            @Override
                            public String check() {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        if (!hi.getHost().isDrbdStatusOk()) {
                            return HostDrbdInfo.NO_DRBD_STATUS_TOOLTIP;
                        }
                    }
                    return null;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        DRBD.up(hi.getHost(), DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.LIVE);
                    }
                }});
        items.add(upAllItem);
        final ButtonCallback upAllItemCallback =
             getBrowser().new DRBDMenuItemCallback(getBrowser().getDCHost())
                 .addAction(new CallbackAction() {
                         @Override
                         public void run(final Host host) {
                for (final HostDrbdInfo hi : selectedHostInfos) {
                    DRBD.up(hi.getHost(), DRBD.ALL_DRBD_RESOURCES, null, Application.RunMode.TEST);
                }
            }});
        multiSelectionInfo.addMouseOverListener(upAllItem, upAllItemCallback);

        /* stop drbd proxy with init script */
        final UpdatableItem stopProxyItem =
            menuFactory.createMenuItem(
                        Tools.getString("MultiSelectionInfo.HostStopProxy"),
                        null,
                        Tools.getString("MultiSelectionInfo.HostStopProxy"),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                        new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        if (hi.getHost().isDrbdProxyRunning()) {
                            return true;
                        }
                    }
                    return false;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        DRBD.stopProxy(hi.getHost(), Application.RunMode.LIVE);
                    }
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                    }
                }});
        items.add(stopProxyItem);

        /* start drbd proxy with init script */
        final UpdatableItem startProxyItem = menuFactory.createMenuItem(
                      Tools.getString("MultiSelectionInfo.HostStartProxy"),
                      null,
                      Tools.getString("MultiSelectionInfo.HostStartProxy"),
                      new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                      new AccessMode(AccessMode.OP, AccessMode.NORMAL))
                .visiblePredicate(new VisiblePredicate() {
                        @Override
                        public boolean check() {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        if (!hi.getHost().isDrbdProxyRunning()) {
                            return true;
                        }
                    }
                    return false;
                }})
                .addAction(new MenuAction() {
                        @Override
                        public void run(final String text) {
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        DRBD.startProxy(hi.getHost(), Application.RunMode.LIVE);
                    }
                    for (final HostDrbdInfo hi : selectedHostInfos) {
                        getBrowser().updateHWInfo(hi.getHost(), !Host.UPDATE_LVM);
                    }
                }});
        items.add(startProxyItem);

        /* change host color */
        final UpdatableItem changeHostColorItem = menuFactory.createMenuItem(
                    Tools.getString("MultiSelectionInfo.ChangeHostColor"),
                    null,
                    "",
                    new AccessMode(AccessMode.RO, AccessMode.NORMAL),
                    new AccessMode(AccessMode.RO, AccessMode.NORMAL))
                .addAction(new MenuAction() {
                    @Override
                    public void run(final String text) {
                        final Host firstHost = selectedHostInfos.get(0).getHost();
                        final Color newColor = JColorChooser.showDialog(
View Full Code Here

    private UpdatableItem getPVCreateItem(final Iterable<BlockDevInfo> selectedBlockDevInfos) {
        return menuFactory.createMenuItem(
                    Tools.getString("MultiSelectionInfo.PVCreate"),
                    null,
                    Tools.getString("MultiSelectionInfo.PVCreate.ToolTip"),
                    new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                    new AccessMode(AccessMode.OP, AccessMode.NORMAL))
            .visiblePredicate(new VisiblePredicate() {
                @Override
                public boolean check() {
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
                        if (bdi.canCreatePV()
View Full Code Here

    private UpdatableItem getPVRemoveItem(final Iterable<BlockDevInfo> selectedBlockDevInfos) {
        return menuFactory.createMenuItem(
                    Tools.getString("MultiSelectionInfo.PVRemove"),
                    null,
                    Tools.getString("MultiSelectionInfo.PVRemove.ToolTip"),
                    new AccessMode(AccessMode.OP, AccessMode.NORMAL),
                    new AccessMode(AccessMode.OP, AccessMode.NORMAL))
            .visiblePredicate(new VisiblePredicate() {
                @Override
                public boolean check() {
                /* at least one must be true */
                    for (final BlockDevInfo bdi : selectedBlockDevInfos) {
View Full Code Here

TOP

Related Classes of lcmc.common.domain.AccessMode

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.