You are viewing a plain text version of this content. The canonical link for it is here.
Posted to kalumet-commits@incubator.apache.org by jb...@apache.org on 2011/11/23 20:52:25 UTC
svn commit: r1205585 [22/23] - in /incubator/kalumet/trunk: ./ console/
console/src/main/java/org/apache/kalumet/console/app/
console/src/main/resources/org/apache/kalumet/console/app/templates/
Added: incubator/kalumet/trunk/console/src/main/java/org/apache/kalumet/console/app/SoftwareWindow.java
URL: http://svn.apache.org/viewvc/incubator/kalumet/trunk/console/src/main/java/org/apache/kalumet/console/app/SoftwareWindow.java?rev=1205585&view=auto
==============================================================================
--- incubator/kalumet/trunk/console/src/main/java/org/apache/kalumet/console/app/SoftwareWindow.java (added)
+++ incubator/kalumet/trunk/console/src/main/java/org/apache/kalumet/console/app/SoftwareWindow.java Wed Nov 23 20:52:16 2011
@@ -0,0 +1,2039 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.kalumet.console.app;
+
+import java.util.Iterator;
+
+import nextapp.echo2.app.Button;
+import nextapp.echo2.app.Column;
+import nextapp.echo2.app.ContentPane;
+import nextapp.echo2.app.Extent;
+import nextapp.echo2.app.Grid;
+import nextapp.echo2.app.Insets;
+import nextapp.echo2.app.Label;
+import nextapp.echo2.app.Row;
+import nextapp.echo2.app.SelectField;
+import nextapp.echo2.app.SplitPane;
+import nextapp.echo2.app.TextField;
+import nextapp.echo2.app.WindowPane;
+import nextapp.echo2.app.event.ActionEvent;
+import nextapp.echo2.app.event.ActionListener;
+import nextapp.echo2.extras.app.TabPane;
+import nextapp.echo2.extras.app.layout.TabPaneLayoutData;
+import org.apache.kalumet.FileManipulator;
+import org.apache.kalumet.console.configuration.ConfigurationManager;
+import org.apache.kalumet.model.*;
+import org.apache.kalumet.ws.client.SoftwareClient;
+
+/**
+ * Software window.
+ */
+public class SoftwareWindow extends WindowPane {
+
+ private String name;
+ private Software software;
+ private SoftwaresPane parent;
+ private TextField nameField;
+ private SelectField activeField;
+ private SelectField blockerField;
+ private SelectField beforeJeeField;
+ private TextField uriField;
+ private SelectField updateUnitField;
+ private Grid updatePlanGrid;
+
+ private static String[] UPDATE_UNITS = new String[]{Messages.getString("location"), Messages.getString("command"),
+ Messages.getString("configurationfile"), Messages.getString("database")};
+
+ // update thread
+ class UpdateThread extends Thread {
+
+ public boolean ended = false;
+ public boolean failure = false;
+ public String message;
+
+ public void run() {
+ try {
+ // load Kalumet configuration
+ Kalumet kalumet = ConfigurationManager.loadStore();
+ // looking for the agent
+ Agent agent = kalumet.getAgent(parent.getEnvironmentWindow().getEnvironment().getAgent());
+ if (agent == null) {
+ throw new IllegalArgumentException("agent not found.");
+ }
+ // call the WebService
+ SoftwareClient client = new SoftwareClient(agent.getHostname(), agent.getPort());
+ client.update(parent.getEnvironmentWindow().getEnvironmentName(), name, false);
+ } catch (Exception e) {
+ failure = true;
+ message = "Software " + name + " update failed: " + e.getMessage();
+ } finally {
+ ended = true;
+ }
+ }
+ }
+
+ // execute command thread
+ class ExecuteCommandThread extends Thread {
+
+ public String commandName;
+ public boolean ended = false;
+ public boolean failure = false;
+ public String message;
+
+ public void run() {
+ try {
+ // load Kalumet configuration
+ Kalumet kalumet = ConfigurationManager.loadStore();
+ // looking for the agent
+ Agent agent = kalumet.getAgent(parent.getEnvironmentWindow().getEnvironment().getAgent());
+ if (agent == null) {
+ throw new IllegalArgumentException("agent not found.");
+ }
+ // call the WebService
+ SoftwareClient client = new SoftwareClient(agent.getHostname(), agent.getPort());
+ client.executeCommand(parent.getEnvironmentWindow().getEnvironmentName(), name, commandName, false);
+ } catch (Exception e) {
+ failure = true;
+ message = "Command " + commandName + " execution failed: " + e.getMessage();
+ } finally {
+ ended = true;
+ }
+ }
+ }
+
+ // update location thread
+ class UpdateLocationThread extends Thread {
+
+ public String locationName;
+ public boolean ended = false;
+ public boolean failure = false;
+ public String message;
+
+ public void run() {
+ try {
+ // load Kalumet configuration
+ Kalumet kalumet = ConfigurationManager.loadStore();
+ // looking for the agent
+ Agent agent = kalumet.getAgent(parent.getEnvironmentWindow().getEnvironment().getAgent());
+ if (agent == null) {
+ throw new IllegalArgumentException("agent not found.");
+ }
+ // call the WebService
+ SoftwareClient client = new SoftwareClient(agent.getHostname(), agent.getPort());
+ client.updateLocation(parent.getEnvironmentWindow().getEnvironmentName(), name, locationName, false);
+ } catch (Exception e) {
+ failure = true;
+ message = "Location " + locationName + " update failed: " + e.getMessage();
+ } finally {
+ ended = true;
+ }
+ }
+ }
+
+ // update configuration file thread
+ class UpdateConfigurationFileThread extends Thread {
+
+ public String configurationFileName;
+ public boolean ended = false;
+ public boolean failure = false;
+ public String message;
+
+ public void run() {
+ try {
+ // load Kalumet configuration
+ Kalumet kalumet = ConfigurationManager.loadStore();
+ // looking for the agent
+ Agent agent = kalumet.getAgent(parent.getEnvironmentWindow().getEnvironment().getAgent());
+ if (agent == null) {
+ throw new IllegalArgumentException("agent not found.");
+ }
+ // call the WebService
+ SoftwareClient client = new SoftwareClient(agent.getHostname(), agent.getPort());
+ client.updateConfigurationFile(parent.getEnvironmentWindow().getEnvironmentName(), name, configurationFileName, false);
+ } catch (Exception e) {
+ failure = true;
+ message = "Configuration file " + configurationFileName + " update failed: " + e.getMessage();
+ } finally {
+ ended = true;
+ }
+ }
+ }
+
+ // update database thread
+ class UpdateDatabaseThread extends Thread {
+
+ public String databaseName;
+ public boolean ended = false;
+ public boolean failure = false;
+ public String message;
+
+ public void run() {
+ try {
+ // load Kalumet configuration
+ Kalumet kalumet = ConfigurationManager.loadStore();
+ // looking for the agent
+ Agent agent = kalumet.getAgent(parent.getEnvironmentWindow().getEnvironment().getAgent());
+ if (agent == null) {
+ throw new IllegalArgumentException("agent not found.");
+ }
+ // call the WebService
+ SoftwareClient client = new SoftwareClient(agent.getHostname(), agent.getPort());
+ client.updateDatabase(parent.getEnvironmentWindow().getEnvironmentName(), name, databaseName, false);
+ } catch (Exception e) {
+ failure = true;
+ message = "Database " + databaseName + " update failed: " + e.getMessage();
+ } finally {
+ ended = true;
+ }
+ }
+ }
+
+ // refresh
+ private ActionListener refresh = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // looking for the software object
+ SoftwareWindow.this.software = parent.getEnvironmentWindow().getEnvironment().getSoftware(name);
+ if (SoftwareWindow.this.software == null) {
+ SoftwareWindow.this.software = new Software();
+ }
+ // update the window
+ update();
+ }
+ };
+ // close
+ private ActionListener close = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ SoftwareWindow.this.userClose();
+ }
+ };
+ // delete
+ private ActionListener delete = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the environment lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // delete the software software
+ parent.getEnvironmentWindow().getEnvironment().getSoftwares().remove(software);
+ // change the updated flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal log tab pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the whole environment window
+ parent.getEnvironmentWindow().update();
+ // close the window
+ SoftwareWindow.this.userClose();
+ }
+ }));
+ }
+ };
+ // apply
+ private ActionListener apply = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the environment lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the fields value
+ String nameFieldValue = nameField.getText();
+ int activeFieldIndex = activeField.getSelectedIndex();
+ int blockerFieldIndex = blockerField.getSelectedIndex();
+ int beforeJeeFieldIndex = beforeJeeField.getSelectedIndex();
+ String uriFieldValue = uriField.getText();
+ // check fields
+ if (nameFieldValue == null || nameFieldValue.trim().length() < 1) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("software.mandatory"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // if the user change the software name, check if the name
+ // doesnt't already exist
+ if (name == null || (name != null && !name.equals(nameFieldValue))) {
+ if (parent.getEnvironmentWindow().getEnvironment().getSoftware(nameFieldValue) != null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("software.exists"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ }
+ // update the software object
+ software.setName(nameFieldValue);
+ if (activeFieldIndex == 0) {
+ software.setActive(true);
+ } else {
+ software.setActive(false);
+ }
+ if (blockerFieldIndex == 0) {
+ software.setBlocker(true);
+ } else {
+ software.setBlocker(false);
+ }
+ if (beforeJeeFieldIndex == 0) {
+ software.setBeforej2ee(true);
+ } else {
+ software.setBeforej2ee(false);
+ }
+ software.setUri(uriFieldValue);
+ // add the software object if needed
+ if (name == null) {
+ try {
+ parent.getEnvironmentWindow().getEnvironment().addSoftware(software);
+ } catch (Exception e) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("software.exists"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ }
+ // update the window definition
+ setTitle(Messages.getString("software") + " " + software.getName());
+ setId("softwarewindow_" + parent.getEnvironmentWindow().getEnvironmentName() + "_" + software.getName());
+ name = software.getName();
+ // change the updated flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal log tab pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the whole environment window
+ parent.getEnvironmentWindow().update();
+ // update the window
+ update();
+ }
+ };
+ // copy
+ private ActionListener copy = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ try {
+ KalumetConsoleApplication.getApplication().setCopyComponent(software.clone());
+ } catch (Exception e) {
+ return;
+ }
+ }
+ };
+ // paste
+ private ActionListener paste = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ Object copy = KalumetConsoleApplication.getApplication().getCopyComponent();
+ // check the copy object
+ if (copy == null || !(copy instanceof Software)) {
+ return;
+ }
+ // update the object
+ software = (Software) copy;
+ name = null;
+ // update the parent pane
+ parent.update();
+ // update the window
+ update();
+ }
+ };
+ // add update unit
+ private ActionListener addUpdateUnit = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ if (updateUnitField.getSelectedIndex() == 0) {
+ // location
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new SoftwareLocationWindow(SoftwareWindow.this, null));
+ }
+ if (updateUnitField.getSelectedIndex() == 1) {
+ // command
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new SoftwareCommandWindow(SoftwareWindow.this, null));
+ }
+ if (updateUnitField.getSelectedIndex() == 2) {
+ // configuration file
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new SoftwareConfigurationFileWindow(SoftwareWindow.this, null));
+ }
+ if (updateUnitField.getSelectedIndex() == 3) {
+ // database
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new SoftwareDatabaseWindow(SoftwareWindow.this, null));
+ }
+ }
+ };
+ // edit location
+ private ActionListener editLocation = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ if (KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().getComponent("softwarelocationwindow_" + parent.getEnvironmentWindow().getEnvironmentName() + "_" + name + "_" + event.getActionCommand()) == null) {
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new SoftwareLocationWindow(SoftwareWindow.this, event.getActionCommand()));
+ }
+ }
+ };
+ // edit command
+ private ActionListener editCommand = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ if (KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().getComponent("softwarecommandwindow_" + parent.getEnvironmentWindow().getEnvironmentName() + "_" + name + "_" + event.getActionCommand()) == null) {
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new SoftwareCommandWindow(SoftwareWindow.this, event.getActionCommand()));
+ }
+ }
+ };
+ // edit configuration file
+ private ActionListener editConfigurationFile = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ if (KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().getComponent("softwareconfigurationfilewindow_" + parent.getEnvironmentWindow().getEnvironmentName() + "_" + name + "_" + event.getActionCommand()) == null) {
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new SoftwareConfigurationFileWindow(SoftwareWindow.this, event.getActionCommand()));
+ }
+ }
+ };
+ // edit database
+ private ActionListener editDatabase = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ if (KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().getComponent("softwaredatabasewindow_" + parent.getEnvironmentWindow().getEnvironmentName() + "_" + name + "_" + event.getActionCommand()) == null) {
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new SoftwareDatabaseWindow(SoftwareWindow.this, event.getActionCommand()));
+ }
+ }
+ };
+ // toggle active location
+ private ActionListener toggleActiveLocation = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the location object
+ Location location = software.getLocation(event.getActionCommand());
+ if (location == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("location.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // change the state and add an event
+ if (location.isActive()) {
+ location.setActive(false);
+ parent.getEnvironmentWindow().getChangeEvents().add("Disable software " + name + " location " + location.getName());
+ } else {
+ location.setActive(true);
+ parent.getEnvironmentWindow().getChangeEvents().add("Enable software " + name + " location " + location.getName());
+ }
+ // change the update flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ };
+ // toggle active command
+ private ActionListener toggleActiveCommand = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the command object
+ Command command = software.getCommand(event.getActionCommand());
+ if (command == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("command.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // change the state and add an event
+ if (command.isActive()) {
+ command.setActive(false);
+ parent.getEnvironmentWindow().getChangeEvents().add("Disable software " + name + " command " + command.getName());
+ } else {
+ command.setActive(true);
+ parent.getEnvironmentWindow().getChangeEvents().add("Enable software " + name + " command " + command.getName());
+ }
+ // change the update flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ };
+ // toggle active configuration file
+ private ActionListener toggleActiveConfigurationFile = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the configuration file object
+ ConfigurationFile configurationFile = software.getConfigurationFile(event.getActionCommand());
+ if (configurationFile == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("configurationfile.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ if (configurationFile.isActive()) {
+ configurationFile.setActive(false);
+ parent.getEnvironmentWindow().getChangeEvents().add("Disable software " + name + " command " + configurationFile.getName());
+ } else {
+ configurationFile.setActive(true);
+ parent.getEnvironmentWindow().getChangeEvents().add("Enable software " + name + " command " + configurationFile.getName());
+ }
+ // change the update flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ };
+ // toggle active database
+ private ActionListener toggleActiveDatabase = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the database object
+ Database database = software.getDatabase(event.getActionCommand());
+ if (database == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("database.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ if (database.isActive()) {
+ database.setActive(false);
+ parent.getEnvironmentWindow().getChangeEvents().add("Disable software " + name + " database " + database.getName());
+ } else {
+ database.setActive(true);
+ parent.getEnvironmentWindow().getChangeEvents().add("Enable software " + name + " database " + database.getName());
+ }
+ // change the update flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ };
+ // toggle blocker command
+ private ActionListener toggleBlockerCommand = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the command object
+ Command command = software.getCommand(event.getActionCommand());
+ if (command == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("command.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ if (command.isBlocker()) {
+ command.setBlocker(false);
+ parent.getEnvironmentWindow().getChangeEvents().add("Set not blocker for software " + name + " command " + command.getName());
+ } else {
+ command.setBlocker(true);
+ parent.getEnvironmentWindow().getChangeEvents().add("Set blocker for software " + name + " command " + command.getName());
+ }
+ // change the update flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ };
+ // toggle blocker configuration file
+ private ActionListener toggleBlockerConfigurationFile = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the configuration file object
+ ConfigurationFile configurationFile = software.getConfigurationFile(event.getActionCommand());
+ if (configurationFile == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("configurationfile.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ if (configurationFile.isBlocker()) {
+ configurationFile.setBlocker(false);
+ parent.getEnvironmentWindow().getChangeEvents().add("Set not blocker for software " + name + " configuration file " + configurationFile.getName());
+ } else {
+ configurationFile.setBlocker(true);
+ parent.getEnvironmentWindow().getChangeEvents().add("Set blocker for software " + name + " configuration file " + configurationFile.getName());
+ }
+ // change the update flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ };
+ // toggle blocker database
+ private ActionListener toggleBlockerDatabase = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the database object
+ Database database = software.getDatabase(event.getActionCommand());
+ if (database == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("database.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ if (database.isBlocker()) {
+ database.setBlocker(false);
+ parent.getEnvironmentWindow().getChangeEvents().add("Set not blocker for software " + name + " database " + database.getName());
+ } else {
+ database.setBlocker(true);
+ parent.getEnvironmentWindow().getChangeEvents().add("Set blocker for software " + name + " database " + database.getName());
+ }
+ // change the update flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ };
+ // toggle blocker location
+ private ActionListener toggleBlockerLocation = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the location object
+ Location location = software.getLocation(event.getActionCommand());
+ if (location == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("location.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ if (location.isBlocker()) {
+ location.setBlocker(false);
+ parent.getEnvironmentWindow().getChangeEvents().add("Set not blocker for software " + name + " location " + location.getName());
+ } else {
+ location.setBlocker(true);
+ parent.getEnvironmentWindow().getChangeEvents().add("Set blocker for software " + name + " location " + location.getName());
+ }
+ // change the update flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ };
+ // copy command
+ private ActionListener copyCommand = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ Command command = software.getCommand(event.getActionCommand());
+ if (command == null) {
+ return;
+ }
+ try {
+ KalumetConsoleApplication.getApplication().setCopyComponent(command.clone());
+ } catch (Exception e) {
+ return;
+ }
+ }
+ };
+ // copy configuration file
+ private ActionListener copyConfigurationFile = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ ConfigurationFile configurationFile = software.getConfigurationFile(event.getActionCommand());
+ if (configurationFile == null) {
+ return;
+ }
+ try {
+ KalumetConsoleApplication.getApplication().setCopyComponent(configurationFile.clone());
+ } catch (Exception e) {
+ return;
+ }
+ }
+ };
+ // copy database
+ private ActionListener copyDatabase = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ Database database = software.getDatabase(event.getActionCommand());
+ if (database == null) {
+ return;
+ }
+ try {
+ KalumetConsoleApplication.getApplication().setCopyComponent(database.clone());
+ } catch (Exception e) {
+ return;
+ }
+ }
+ };
+ // copy location
+ private ActionListener copyLocation = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ Location location = software.getLocation(event.getActionCommand());
+ if (location == null) {
+ return;
+ }
+ try {
+ KalumetConsoleApplication.getApplication().setCopyComponent(location.clone());
+ } catch (Exception e) {
+ return;
+ }
+ }
+ };
+ // delete command
+ private ActionListener deleteCommand = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the command object
+ final Command command = software.getCommand(event.getActionCommand());
+ if (command == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("command.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // delete the command
+ software.getUpdatePlan().remove(command);
+ // add an event
+ parent.getEnvironmentWindow().getChangeEvents().add("Delete software " + name + " command " + command.getName());
+ // set the update flag
+ parent.getEnvironmentWindow().setUpdated(true);
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ }));
+ }
+ };
+ // delete configuration file
+ private ActionListener deleteConfigurationFile = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the configuration file object
+ final ConfigurationFile configurationFile = software.getConfigurationFile(event.getActionCommand());
+ if (configurationFile == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("configurationfile.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // delete the configuration file
+ software.getUpdatePlan().remove(configurationFile);
+ // add an event
+ parent.getEnvironmentWindow().getChangeEvents().add("Delete software " + name + " configuration file " + configurationFile.getName());
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ }));
+ }
+ };
+ // delete database
+ private ActionListener deleteDatabase = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the database object
+ final Database database = software.getDatabase(event.getActionCommand());
+ if (database == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("database.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // delete the database
+ software.getUpdatePlan().remove(database);
+ // add an event
+ parent.getEnvironmentWindow().getChangeEvents().add("Delete software " + name + " database " + database.getName());
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ }));
+ }
+ };
+ // delete location
+ private ActionListener deleteLocation = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // looking for the location object
+ final Location location = software.getLocation(event.getActionCommand());
+ if (location == null) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("location.notfound"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // delete the location
+ software.getUpdatePlan().remove(location);
+ // add an event
+ parent.getEnvironmentWindow().getChangeEvents().add("Delete software " + name + " location " + location.getName());
+ // update the journal pane
+ parent.getEnvironmentWindow().updateJournalPane();
+ // update the pane
+ update();
+ }
+ }));
+ }
+ };
+ // up command
+ private ActionListener upCommand = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the command object
+ Command command = software.getCommand(event.getActionCommand());
+ if (command == null) {
+ return;
+ }
+ // get the command index
+ int index = software.getUpdatePlan().indexOf(command);
+ if (index == 0 || index == -1 || software.getUpdatePlan().size() < 2) {
+ return;
+ }
+ // get the previous update unit
+ Object previous = software.getUpdatePlan().get(index - 1);
+ // switch the update unit
+ software.getUpdatePlan().set(index, previous);
+ software.getUpdatePlan().set(index - 1, command);
+ // update the pane
+ update();
+ }
+ };
+ // down command
+ private ActionListener downCommand = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the command object
+ Command command = software.getCommand(event.getActionCommand());
+ if (command == null) {
+ return;
+ }
+ // get the command index
+ int index = software.getUpdatePlan().indexOf(command);
+ if (index == (software.getUpdatePlan().size() - 1) || index == -1 || software.getUpdatePlan().size() < 2) {
+ return;
+ }
+ // get the next update unit
+ Object next = software.getUpdatePlan().get(index + 1);
+ // switch the update unit
+ software.getUpdatePlan().set(index + 1, command);
+ software.getUpdatePlan().set(index, next);
+ // update the pane
+ update();
+ }
+ };
+ // up configuration file
+ private ActionListener upConfigurationFile = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the configuration file object
+ ConfigurationFile configurationFile = software.getConfigurationFile(event.getActionCommand());
+ if (configurationFile == null) {
+ return;
+ }
+ // get the configuration file index
+ int index = software.getUpdatePlan().indexOf(configurationFile);
+ if (index == 0 || index == -1 || software.getUpdatePlan().size() < 2) {
+ return;
+ }
+ // get the previous update unit
+ Object previous = software.getUpdatePlan().get(index - 1);
+ // switch update unit
+ software.getUpdatePlan().set(index, previous);
+ software.getUpdatePlan().set(index - 1, configurationFile);
+ // update the pane
+ update();
+ }
+ };
+ // down configuration file
+ private ActionListener downConfigurationFile = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the configuration file object
+ ConfigurationFile configurationFile = software.getConfigurationFile(event.getActionCommand());
+ if (configurationFile == null) {
+ return;
+ }
+ // get the configuration file index
+ int index = software.getUpdatePlan().indexOf(configurationFile);
+ if (index == -1 || index == (software.getUpdatePlan().size() - 1) || software.getUpdatePlan().size() < 2) {
+ return;
+ }
+ // get the next update unit
+ Object next = software.getUpdatePlan().get(index + 1);
+ // switch update unit
+ software.getUpdatePlan().set(index, next);
+ software.getUpdatePlan().set(index + 1, configurationFile);
+ // update the pane
+ update();
+ }
+ };
+ // up database
+ private ActionListener upDatabase = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the database object
+ Database database = software.getDatabase(event.getActionCommand());
+ if (database == null) {
+ return;
+ }
+ // get the database index
+ int index = software.getUpdatePlan().indexOf(database);
+ if (index == -1 || index == 0 || software.getUpdatePlan().size() < 2) {
+ return;
+ }
+ // get the previous update unit
+ Object previous = software.getUpdatePlan().get(index - 1);
+ // switch update unit
+ software.getUpdatePlan().set(index - 1, database);
+ software.getUpdatePlan().set(index, previous);
+ // update the pane
+ update();
+ }
+ };
+ // down database
+ private ActionListener downDatabase = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the database object
+ Database database = software.getDatabase(event.getActionCommand());
+ if (database == null) {
+ return;
+ }
+ // get the database index
+ int index = software.getUpdatePlan().indexOf(database);
+ if (index == -1 || index == (software.getUpdatePlan().size() - 1) || software.getUpdatePlan().size() < 2) {
+ return;
+ }
+ // get the next update unit
+ Object next = software.getUpdatePlan().get(index + 1);
+ // switch update unit
+ software.getUpdatePlan().set(index, next);
+ software.getUpdatePlan().set(index + 1, database);
+ // update the pane
+ update();
+ }
+ };
+ // up location
+ private ActionListener upLocation = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the location object
+ Location location = software.getLocation(event.getActionCommand());
+ if (location == null) {
+ return;
+ }
+ // get the location index
+ int index = software.getUpdatePlan().indexOf(location);
+ if (index == -1 || index == 0 || software.getUpdatePlan().size() < 2) {
+ return;
+ }
+ // get the previous update unit
+ Object previous = software.getUpdatePlan().get(index - 1);
+ // switch the update units
+ software.getUpdatePlan().set(index - 1, location);
+ software.getUpdatePlan().set(index, previous);
+ // update the pane
+ update();
+ }
+ };
+ // down location
+ private ActionListener downLocation = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresPermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the location object
+ Location location = software.getLocation(event.getActionCommand());
+ if (location == null) {
+ return;
+ }
+ // get the location index
+ int index = software.getUpdatePlan().indexOf(location);
+ if (index == -1 || index == (software.getUpdatePlan().size() - 1) || software.getUpdatePlan().size() < 2) {
+ return;
+ }
+ // get the next update unit
+ Object next = software.getUpdatePlan().get(index + 1);
+ // switch the update units
+ software.getUpdatePlan().set(index, next);
+ software.getUpdatePlan().set(index + 1, location);
+ // update the pane
+ update();
+ }
+ };
+ // update
+ private ActionListener update = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresUpdatePermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if some change has not been saved
+ if (getEnvironmentWindow().isUpdated()) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.notsaved"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // add a message into the log pane and the journal
+ KalumetConsoleApplication.getApplication().getLogPane().addInfo("Software " + name + " update in progress ...", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " update requested.");
+ // start the update thread
+ final UpdateThread updateThread = new UpdateThread();
+ updateThread.start();
+ // sync with the client
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), new Runnable() {
+ public void run() {
+ if (updateThread.ended) {
+ if (updateThread.failure) {
+ KalumetConsoleApplication.getApplication().getLogPane().addError(updateThread.message, parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add(updateThread.message);
+ } else {
+ KalumetConsoleApplication.getApplication().getLogPane().addConfirm("Software " + name + " updated.", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " updated.");
+ }
+ } else {
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), this);
+ }
+ }
+ });
+ }
+ }));
+ }
+ };
+ // execute command
+ private ActionListener executeCommand = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresUpdatePermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if some change has not yet been saved
+ if (getEnvironmentWindow().isUpdated()) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.notsaved"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ final String commandName = event.getActionCommand();
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // add a message into the log pane and the journal
+ KalumetConsoleApplication.getApplication().getLogPane().addInfo("Software " + name + " command " + commandName + " execution in progress ...", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " command " + commandName + " execution requested.");
+ // start the execute command thread
+ final ExecuteCommandThread executeCommandThread = new ExecuteCommandThread();
+ executeCommandThread.commandName = commandName;
+ executeCommandThread.start();
+ // sync with the client
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), new Runnable() {
+ public void run() {
+ if (executeCommandThread.ended) {
+ if (executeCommandThread.failure) {
+ KalumetConsoleApplication.getApplication().getLogPane().addError(executeCommandThread.message, parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add(executeCommandThread.message);
+ } else {
+ KalumetConsoleApplication.getApplication().getLogPane().addConfirm("Software " + name + " command " + commandName + " executed.", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " command " + commandName + " executed.");
+ }
+ } else {
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), this);
+ }
+ }
+ });
+ }
+ }));
+ }
+ };
+ // update configuration file
+ private ActionListener updateConfigurationFile = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresUpdatePermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if some change has not yet been saved
+ if (parent.getEnvironmentWindow().isUpdated()) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.notsaved"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ final String configurationFileName = event.getActionCommand();
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // add a message into the log pane and the journal
+ KalumetConsoleApplication.getApplication().getLogPane().addInfo("Software " + name + " configuration file " + configurationFileName + " update in progress ...", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " configuration file " + configurationFileName + " update requested.");
+ // start the update thread
+ final UpdateConfigurationFileThread updateThread = new UpdateConfigurationFileThread();
+ updateThread.configurationFileName = configurationFileName;
+ updateThread.start();
+ // sync with the client
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), new Runnable() {
+ public void run() {
+ if (updateThread.ended) {
+ if (updateThread.failure) {
+ KalumetConsoleApplication.getApplication().getLogPane().addError(updateThread.message, parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add(updateThread.message);
+ } else {
+ KalumetConsoleApplication.getApplication().getLogPane().addConfirm("Software " + name + " configuration file " + configurationFileName + " updated.", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " configuration file " + configurationFileName + " updated.");
+ }
+ } else {
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), this);
+ }
+ }
+ });
+ }
+ }));
+ }
+ };
+ // update database
+ private ActionListener updateDatabase = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresUpdatePermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if some change has not yet been saved
+ if (parent.getEnvironmentWindow().isUpdated()) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.notsaved"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the database name
+ final String databaseName = event.getActionCommand();
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // add a message into the log pane and the journal
+ KalumetConsoleApplication.getApplication().getLogPane().addInfo("Software " + name + " database " + databaseName + " update in progress ...", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " database " + databaseName + " update requested.");
+ // start the update thread
+ final UpdateDatabaseThread updateThread = new UpdateDatabaseThread();
+ updateThread.databaseName = databaseName;
+ updateThread.start();
+ // sync with the client
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), new Runnable() {
+ public void run() {
+ if (updateThread.ended) {
+ if (updateThread.failure) {
+ KalumetConsoleApplication.getApplication().getLogPane().addError(updateThread.message, parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add(updateThread.message);
+ } else {
+ KalumetConsoleApplication.getApplication().getLogPane().addConfirm("Software " + name + " database " + databaseName + " updated.", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " database " + databaseName + " updated.");
+ }
+ } else {
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), this);
+ }
+ }
+ });
+ }
+ }));
+ }
+ };
+ // update location
+ private ActionListener updateLocation = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // check if the user has the lock
+ if (!getEnvironmentWindow().getEnvironment().getLock().equals(KalumetConsoleApplication.getApplication().getUserid())) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.locked"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if the user can do it
+ if (!getEnvironmentWindow().adminPermission
+ && !getEnvironmentWindow().softwaresUpdatePermission) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("action.restricted"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // check if some change has not yet been saved
+ if (getEnvironmentWindow().isUpdated()) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning(Messages.getString("environment.notsaved"), getEnvironmentWindow().getEnvironmentName());
+ return;
+ }
+ // get the location name
+ final String locationName = event.getActionCommand();
+ // display confirm window
+ KalumetConsoleApplication.getApplication().getDefaultWindow().getContent().add(new ConfirmWindow(new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ // add a message into the log pane and the journal
+ KalumetConsoleApplication.getApplication().getLogPane().addInfo("Software " + name + " location " + locationName + " update in progress ...", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " location " + locationName + " update requested.");
+ // start the update thread
+ final UpdateLocationThread updateThread = new UpdateLocationThread();
+ updateThread.locationName = locationName;
+ updateThread.start();
+ // sync with the client
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), new Runnable() {
+ public void run() {
+ if (updateThread.ended) {
+ if (updateThread.failure) {
+ KalumetConsoleApplication.getApplication().getLogPane().addError(updateThread.message, parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add(updateThread.message);
+ } else {
+ KalumetConsoleApplication.getApplication().getLogPane().addConfirm("Software " + name + " location " + locationName + " updated.", parent.getEnvironmentWindow().getEnvironmentName());
+ parent.getEnvironmentWindow().getChangeEvents().add("Software " + name + " location " + locationName + " updated.");
+ }
+ } else {
+ KalumetConsoleApplication.getApplication().enqueueTask(KalumetConsoleApplication.getApplication().getTaskQueue(), this);
+ }
+ }
+ });
+ }
+ }));
+ }
+ };
+ // test URI
+ private ActionListener testUri = new ActionListener() {
+ public void actionPerformed(ActionEvent event) {
+ String uri = FileManipulator.format(uriField.getText());
+ boolean exists = false;
+ try {
+ FileManipulator fileManipulator = FileManipulator.getInstance();
+ exists = fileManipulator.exists(uri);
+ } catch (Exception e) {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning("Can't check the URI " + uri + ": " + e.getMessage(), parent.getEnvironmentWindow().getEnvironmentName());
+ }
+ if (exists) {
+ KalumetConsoleApplication.getApplication().getLogPane().addConfirm("URI " + uri + " exists.", parent.getEnvironmentWindow().getEnvironmentName());
+ } else {
+ KalumetConsoleApplication.getApplication().getLogPane().addWarning("URI " + uri + " doesn't exists.", parent.getEnvironmentWindow().getEnvironmentName());
+ }
+ }
+ };
+
+ /**
+ * Create a new <code>ExternalWindow</code>.
+ *
+ * @param parent the parent <code>ExternalsPane</code>.
+ * @param softwareName the original <code>External</code> name.
+ */
+ public SoftwareWindow(SoftwaresPane parent, String softwareName) {
+ super();
+
+ // update the parent tab pane
+ this.parent = parent;
+
+ // update the software name
+ this.name = softwareName;
+
+ // update the software object from the parent environment
+ this.software = parent.getEnvironmentWindow().getEnvironment().getSoftware(softwareName);
+ if (this.software == null) {
+ this.software = new Software();
+ }
+
+ if (softwareName == null) {
+ setTitle(Messages.getString("software"));
+ } else {
+ setTitle(Messages.getString("software") + " " + softwareName);
+ }
+ setId("softwarewindow_" + parent.getEnvironmentWindow().getEnvironmentName() + "_" + softwareName);
+ setStyleName("default");
+ setWidth(new Extent(800, Extent.PX));
+ setHeight(new Extent(600, Extent.PX));
+ setModal(false);
+ setDefaultCloseOperation(WindowPane.DISPOSE_ON_CLOSE);
+
+ // create a split pane for the control buttons
+ SplitPane splitPane = new SplitPane(SplitPane.ORIENTATION_VERTICAL_BOTTOM_TOP, new Extent(32));
+ add(splitPane);
+
+ // add the control pane
+ Row controlRow = new Row();
+ controlRow.setStyleName("control");
+ splitPane.add(controlRow);
+ // add the refresh button
+ Button refreshButton = new Button(Messages.getString("reload"), Styles.DATABASE_REFRESH);
+ refreshButton.setStyleName("control");
+ refreshButton.addActionListener(refresh);
+ controlRow.add(refreshButton);
+ // add the copy button
+ Button copyButton = new Button(Messages.getString("copy"), Styles.PAGE_COPY);
+ copyButton.setStyleName("control");
+ copyButton.addActionListener(copy);
+ controlRow.add(copyButton);
+ if (getEnvironmentWindow().adminPermission
+ || getEnvironmentWindow().softwaresPermission) {
+ // add the paste button
+ Button pasteButton = new Button(Messages.getString("paste"), Styles.PAGE_PASTE);
+ pasteButton.setStyleName("control");
+ pasteButton.addActionListener(paste);
+ controlRow.add(pasteButton);
+ }
+ if (getEnvironmentWindow().adminPermission
+ || getEnvironmentWindow().softwaresUpdatePermission) {
+ // add the update button
+ Button updateButton = new Button(Messages.getString("update"), Styles.COG);
+ updateButton.setStyleName("control");
+ updateButton.addActionListener(update);
+ controlRow.add(updateButton);
+ }
+ if (getEnvironmentWindow().adminPermission
+ || getEnvironmentWindow().softwaresPermission) {
+ // add the apply button
+ Button applyButton = new Button(Messages.getString("apply"), Styles.DATABASE_SAVE);
+ applyButton.setStyleName("control");
+ applyButton.addActionListener(apply);
+ controlRow.add(applyButton);
+ // add the delete button
+ Button deleteButton = new Button(Messages.getString("delete"), Styles.DELETE);
+ deleteButton.setStyleName("control");
+ deleteButton.addActionListener(delete);
+ controlRow.add(deleteButton);
+ }
+ // add the close button
+ Button closeButton = new Button(Messages.getString("close"), Styles.CROSS);
+ closeButton.setStyleName("control");
+ closeButton.addActionListener(close);
+ controlRow.add(closeButton);
+
+ // add a tab pane
+ TabPane tabPane = new TabPane();
+ tabPane.setStyleName("default");
+ splitPane.add(tabPane);
+
+ // add the general pane
+ TabPaneLayoutData tabLayoutData = new TabPaneLayoutData();
+ tabLayoutData.setTitle(Messages.getString("general"));
+ ContentPane generalPane = new ContentPane();
+ generalPane.setStyleName("tab.content");
+ generalPane.setLayoutData(tabLayoutData);
+ tabPane.add(generalPane);
+
+ // add the main grid
+ Grid generalLayoutGrid = new Grid(2);
+ generalLayoutGrid.setStyleName("default");
+ generalLayoutGrid.setColumnWidth(0, new Extent(20, Extent.PERCENT));
+ generalLayoutGrid.setColumnWidth(1, new Extent(80, Extent.PERCENT));
+ generalPane.add(generalLayoutGrid);
+
+ // add name field
+ Label nameLabel = new Label(Messages.getString("name"));
+ nameLabel.setStyleName("grid.cell");
+ generalLayoutGrid.add(nameLabel);
+ nameField = new TextField();
+ nameField.setStyleName("default");
+ nameField.setWidth(new Extent(100, Extent.PERCENT));
+ generalLayoutGrid.add(nameField);
+
+ // add active field
+ Label activeLabel = new Label(Messages.getString("active"));
+ activeLabel.setStyleName("grid.cell");
+ generalLayoutGrid.add(activeLabel);
+ activeField = new SelectField(MainScreen.LABELS);
+ activeField.setStyleName("default");
+ activeField.setWidth(new Extent(10, Extent.EX));
+ generalLayoutGrid.add(activeField);
+
+ // add blocker field
+ Label blockerLabel = new Label(Messages.getString("blocker"));
+ blockerLabel.setStyleName("grid.cell");
+ generalLayoutGrid.add(blockerLabel);
+ blockerField = new SelectField(MainScreen.LABELS);
+ blockerField.setStyleName("default");
+ blockerField.setWidth(new Extent(10, Extent.EX));
+ generalLayoutGrid.add(blockerField);
+
+ // add before JEE field
+ Label beforeJeeLabel = new Label(Messages.getString("before.jee"));
+ beforeJeeLabel.setStyleName("grid.cell");
+ generalLayoutGrid.add(beforeJeeLabel);
+ beforeJeeField = new SelectField(MainScreen.LABELS);
+ beforeJeeField.setStyleName("default");
+ beforeJeeField.setWidth(new Extent(10, Extent.EX));
+ generalLayoutGrid.add(beforeJeeField);
+
+ // add uri field
+ Label uriLabel = new Label(Messages.getString("uri"));
+ uriLabel.setStyleName("grid.cell");
+ generalLayoutGrid.add(uriLabel);
+ Row uriRow = new Row();
+ generalLayoutGrid.add(uriRow);
+ uriField = new TextField();
+ uriField.setStyleName("default");
+ uriField.setWidth(new Extent(500, Extent.PX));
+ uriRow.add(uriField);
+ Button testUriButton = new Button(Styles.WORLD);
+ testUriButton.setToolTipText(Messages.getString("uri.test"));
+ testUriButton.addActionListener(testUri);
+ uriRow.add(testUriButton);
+
+ // add the update plan tab
+ ContentPane updatePlanPane = new ContentPane();
+ updatePlanPane.setStyleName("tab.content");
+ tabLayoutData = new TabPaneLayoutData();
+ tabLayoutData.setTitle(Messages.getString("update.plan"));
+ updatePlanPane.setLayoutData(tabLayoutData);
+ tabPane.add(updatePlanPane);
+
+ Column updatePlanContent = new Column();
+ updatePlanPane.add(updatePlanContent);
+
+ // add add update unit button
+ Row addRow = new Row();
+ addRow.setCellSpacing(new Extent(2));
+ addRow.setInsets(new Insets(2));
+ updatePlanContent.add(addRow);
+ updateUnitField = new SelectField(SoftwareWindow.UPDATE_UNITS);
+ updateUnitField.setStyleName("default");
+ updateUnitField.setWidth(new Extent(50, Extent.EX));
+ addRow.add(updateUnitField);
+ Button addUpdateUnitButton = new Button(Messages.getString("update.unit.add"), Styles.ADD);
+ addUpdateUnitButton.addActionListener(addUpdateUnit);
+ addRow.add(addUpdateUnitButton);
+
+ // add a update plan grid
+ updatePlanGrid = new Grid(4);
+ updatePlanGrid.setStyleName("border.grid");
+ updatePlanGrid.setColumnWidth(0, new Extent(50, Extent.PX));
+ updatePlanContent.add(updatePlanGrid);
+
+ // update the window
+ update();
+ }
+
+ /**
+ * Update this window.
+ */
+ public void update() {
+ // update the general pane
+ // update the name field
+ nameField.setText(software.getName());
+ // update the active field
+ if (software.isActive()) {
+ activeField.setSelectedIndex(0);
+ } else {
+ activeField.setSelectedIndex(1);
+ }
+ // update the blocker field
+ if (software.isBlocker()) {
+ blockerField.setSelectedIndex(0);
+ } else {
+ blockerField.setSelectedIndex(1);
+ }
+ uriField.setText(software.getUri());
+ // update the before JEE field
+ if (software.isBeforej2ee()) {
+ beforeJeeField.setSelectedIndex(0);
+ } else {
+ beforeJeeField.setSelectedIndex(1);
+ }
+
+ // update the update plan grid
+ updatePlanGrid.removeAll();
+ // add the headers
+ Label actionHeader = new Label("");
+ actionHeader.setStyleName("grid.header");
+ updatePlanGrid.add(actionHeader);
[... 394 lines stripped ...]