final MyMenuItem removeEdgeItem = menuFactory.createMenuItem(
Tools.getString("ClusterBrowser.Hb.RemoveEdge"),
ClusterBrowser.REMOVE_ICON,
Tools.getString("ClusterBrowser.Hb.RemoveEdge.ToolTip"),
new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
new AccessMode(AccessMode.OP, AccessMode.NORMAL))
.enablePredicate(new EnablePredicate() {
@Override
public String check() {
if (getBrowser().crmStatusFailed()) {
return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
}
return null;
}
})
.addAction(new MenuAction() {
@Override
public void run(final String text) {
getBrowser().getCrmGraph().removeConnection(hbConnectionInfo, getBrowser().getDCHost(), runMode);
}
});
final ButtonCallback removeEdgeCallback = getBrowser().new ClMenuItemCallback(null) {
@Override
public boolean isEnabled() {
return super.isEnabled() && !hbConnectionInfo.isNew();
}
}
.addAction(new CallbackAction() {
@Override
public void run(final Host dcHost) {
if (!hbConnectionInfo.isNew()) {
getBrowser().getCrmGraph().removeConnection(hbConnectionInfo, dcHost, Application.RunMode.TEST);
}
}
});
hbConnectionInfo.addMouseOverListener(removeEdgeItem, removeEdgeCallback);
items.add(removeEdgeItem);
/* remove/add order */
final MyMenuItem removeOrderItem =
menuFactory.createMenuItem(Tools.getString("ClusterBrowser.Hb.RemoveOrder"),
ClusterBrowser.REMOVE_ICON,
Tools.getString("ClusterBrowser.Hb.RemoveOrder.ToolTip"),
Tools.getString("ClusterBrowser.Hb.AddOrder"),
null,
Tools.getString("ClusterBrowser.Hb.AddOrder.ToolTip"),
new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
new AccessMode(AccessMode.OP, AccessMode.NORMAL))
.predicate(new Predicate() {
@Override
public boolean check() {
return getBrowser().getCrmGraph().isOrder(hbConnectionInfo);
}
})
.enablePredicate(new EnablePredicate() {
@Override
public String check() {
if (getBrowser().crmStatusFailed()) {
return ClusterBrowser.UNKNOWN_CLUSTER_STATUS_STRING;
}
return null;
}
});
removeOrderItem.addAction(new MenuAction() {
@Override
public void run(final String text) {
if (removeOrderItem.getText().equals(Tools.getString("ClusterBrowser.Hb.RemoveOrder"))) {
getBrowser().getCrmGraph().removeOrder(hbConnectionInfo, getBrowser().getDCHost(), runMode);
} else {
/* there is colocation constraint so let's get the
* endpoints from it. */
hbConnectionInfo.addOrder(null,
hbConnectionInfo.getLastServiceInfoRsc(),
hbConnectionInfo.getLastServiceInfoWithRsc());
getBrowser().getCrmGraph().addOrder(hbConnectionInfo, getBrowser().getDCHost(), runMode);
}
}
});
final ButtonCallback removeOrderCallback = getBrowser().new ClMenuItemCallback(null) {
@Override
public boolean isEnabled() {
return super.isEnabled() && !hbConnectionInfo.isNew();
}
}
.addAction(new CallbackAction() {
@Override
public void run(final Host dcHost) {
if (!hbConnectionInfo.isNew()) {
if (getBrowser().getCrmGraph().isOrder(hbConnectionInfo)) {
getBrowser().getCrmGraph().removeOrder(hbConnectionInfo, dcHost, Application.RunMode.TEST);
} else {
/* there is colocation constraint so let's get the
* endpoints from it. */
hbConnectionInfo.addOrder(null,
hbConnectionInfo.getLastServiceInfoRsc(),
hbConnectionInfo.getLastServiceInfoWithRsc());
getBrowser().getCrmGraph().addOrder(hbConnectionInfo, dcHost, Application.RunMode.TEST);
}
}
}
});
hbConnectionInfo.addMouseOverListener(removeOrderItem, removeOrderCallback);
items.add(removeOrderItem);
/* remove/add colocation */
final MyMenuItem removeColocationItem =
menuFactory.createMenuItem(
Tools.getString("ClusterBrowser.Hb.RemoveColocation"),
ClusterBrowser.REMOVE_ICON,
Tools.getString("ClusterBrowser.Hb.RemoveColocation.ToolTip"),
Tools.getString("ClusterBrowser.Hb.AddColocation"),
null,
Tools.getString("ClusterBrowser.Hb.AddColocation.ToolTip"),
new AccessMode(AccessMode.ADMIN, AccessMode.NORMAL),
new AccessMode(AccessMode.OP, AccessMode.NORMAL))
.predicate(new Predicate() {
@Override
public boolean check() {
return getBrowser().getCrmGraph().isColocation(hbConnectionInfo);
}