}
final List<String> runningOnHosts = new ArrayList<String>();
final List<String> suspendedOnHosts = new ArrayList<String>();
final List<String> definedhosts = new ArrayList<String>();
for (final Host h : getBrowser().getClusterHosts()) {
final VmsXml vmsXml = getBrowser().getVmsXml(h);
final String hostName = h.getName();
if (vmsXml != null
&& vmsXml.getDomainNames().contains(getDomainName())) {
if (vmsXml.isRunning(getDomainName())) {
if (vmsXml.isSuspended(getDomainName())) {
suspendedOnHosts.add(hostName);
mTransitionWriteLock.lock();
try {
suspending.remove(hostName);
} finally {
mTransitionWriteLock.unlock();
}
} else {
mTransitionWriteLock.lock();
try {
resuming.remove(hostName);
} finally {
mTransitionWriteLock.unlock();
}
}
runningOnHosts.add(hostName);
mTransitionWriteLock.lock();
try {
starting.remove(hostName);
} finally {
mTransitionWriteLock.unlock();
}
}
definedhosts.add(hostName);
} else {
definedhosts.add("<font color=\"#A3A3A3\">" + hostName + "</font>");
}
}
definedOnString = "<html>"
+ Tools.join(", ", definedhosts.toArray(new String[definedhosts.size()]))
+ "</html>";
final boolean running = !runningOnHosts.isEmpty();
mTransitionWriteLock.lock();
/* Set host buttons */
setHostButtons(running);
if (runningOnHosts.isEmpty() && starting.isEmpty()) {
shuttingdown.clear();
suspending.clear();
resuming.clear();
mTransitionWriteLock.unlock();
runningOnString = "Stopped";
} else {
mTransitionWriteLock.unlock();
if (progress.charAt(0) == '-') {
progress.setCharAt(0, '\\');
} else if (progress.charAt(0) == '\\') {
progress.setCharAt(0, '|');
} else if (progress.charAt(0) == '|') {
progress.setCharAt(0, '/');
} else if (progress.charAt(0) == '/') {
progress.setCharAt(0, '-');
}
mTransitionReadLock.lock();
try {
if (!starting.isEmpty()) {
runningOnString = "<html>Starting on: "
+ Tools.join(", ", starting.toArray(new String[starting.size()]))
+ progress.toString()
+ "</html>";
} else if (!shuttingdown.isEmpty()) {
runningOnString = "<html>Shutting down on: "
+ Tools.join(", ", shuttingdown.toArray(new String[shuttingdown.size()]))
+ progress.toString()
+ "</html>";
} else if (!suspending.isEmpty()) {
runningOnString = "<html>Suspending on: "
+ Tools.join(", ", suspending.toArray(new String[suspending.size()]))
+ progress.toString()
+ "</html>";
} else if (!resuming.isEmpty()) {
runningOnString = "<html>Resuming on: "
+ Tools.join(", ", resuming.toArray(new String[suspending.size()]))
+ progress.toString()
+ "</html>";
} else if (!suspendedOnHosts.isEmpty()) {
runningOnString = "<html>Paused on: "
+ Tools.join(", ", suspendedOnHosts.toArray(
new String[suspendedOnHosts.size()]))
+ "</html>";
} else {
runningOnString = "<html>Running on: "
+ Tools.join(", ", runningOnHosts.toArray(new String[runningOnHosts.size()]))
+ "</html>";
}
} finally {
mTransitionReadLock.unlock();
}
}
for (final Host h : getBrowser().getClusterHosts()) {
final VmsXml vmsXml = getBrowser().getVmsXml(h);
final Widget hwi = definedOnHostComboBoxHash.get(h.getName());
if (hwi != null) {
final Value value;
if ((vmsXml != null && vmsXml.getDomainNames().contains(getDomainName()))) {
value = DEFINED_ON_HOST_TRUE;
} else {
value = DEFINED_ON_HOST_FALSE;
}
hwi.setValue(value);
}
}
for (final String param : getParametersFromXML()) {
final Value oldValue = getParamSaved(param);
Value value = null;
final Widget wi = getWidget(param, null);
for (final Host h : getDefinedOnHosts()) {
final VmsXml vmsXml = getBrowser().getVmsXml(h);
if (vmsXml != null && value == null) {
final Value savedValue;
if (VmsXml.VM_PARAM_CURRENTMEMORY.equals(param)
|| VmsXml.VM_PARAM_MEMORY.equals(param)) {
savedValue = VmsXml.convertKilobytes(vmsXml.getValue(getDomainName(), param));
} else {
savedValue = new StringValue(vmsXml.getValue(getDomainName(), param));
}
if (savedValue == null || savedValue.isNothingSelected()) {
value = getParamDefault(param);
} else {
value = savedValue;
}
}
}
if (!Tools.areEqual(value, oldValue)) {
getResource().setValue(param, value);
if (wi != null) {
/* only if it is not changed by user. */
wi.setValue(value);
}
}
}
for (final Host h : getDefinedOnHosts()) {
final VmsXml vmsXml = getBrowser().getVmsXml(h);
if (vmsXml != null) {
uuid = vmsXml.getValue(getDomainName(), VmsXml.VM_PARAM_UUID);
}
}
application.invokeInEdt(new Runnable() {
@Override
public void run() {