/*
* Copyright (c) 2008-2014 EMC Corporation
* All Rights Reserved
*/
package com.emc.storageos.installer.controller;
import charva.awt.Component;
import charva.awt.event.ItemEvent;
import charva.awt.event.ItemListener;
import charvax.swing.JRadioButton;
import com.emc.storageos.services.util.Configuration;
import com.emc.storageos.installer.util.ClusterType;
import com.emc.storageos.installer.widget.SelectButtonPanel;
/**
* Class implements the control for Node configuration page.
*
*/
public class NewNodeConfigController implements IConfigPanelController {
private int nodeCount = 0;
private String nodeId;
private Configuration config;
private SelectButtonPanel panel;
public NewNodeConfigController(Configuration config, SelectButtonPanel panel) {
this.panel = panel;
this.config = config;
setupEventListener();
}
private void setupEventListener() {
panel.selectList1ItemListener(new SelectNodeCountListener());
panel.selectList2ItemListener(new SelectNodeIdListener());
}
class SelectNodeCountListener implements ItemListener {
@Override
public void itemStateChanged(ItemEvent ie) {
int statechange = ie.getStateChange();
Component source = (Component) ie.getSource();
if (statechange == ItemEvent.SELECTED) {
String buttonLabel = ((JRadioButton) source).getText();
if (buttonLabel.equals(ClusterType.NODE_COUNT_1.getLabel())) {
nodeCount = ClusterType.NODE_COUNT_1.getCount();
} else if (buttonLabel.equals(ClusterType.NODE_COUNT_3.getLabel())) {
nodeCount = ClusterType.NODE_COUNT_3.getCount();
} else if (buttonLabel.equals(ClusterType.NODE_COUNT_5.getLabel())) {
nodeCount = ClusterType.NODE_COUNT_5.getCount();
}
resetNodeIdConfig(nodeCount);
}
}
private void resetNodeIdConfig(int nodeCount) {
JRadioButton node1 = panel.getButtonList2().get(0);
JRadioButton node2 = panel.getButtonList2().get(1);
JRadioButton node3 = panel.getButtonList2().get(2);
JRadioButton node4 = panel.getButtonList2().get(3);
JRadioButton node5 = panel.getButtonList2().get(4);
switch (nodeCount) {
case 1:
node2.setVisible(false);
node3.setVisible(false);
node4.setVisible(false);
node5.setVisible(false);
break;
case 3:
node2.setVisible(true);
node3.setVisible(true);
node4.setVisible(false);
node5.setVisible(false);
break;
case 5:
node2.setVisible(true);
node3.setVisible(true);
node4.setVisible(true);
node5.setVisible(true);
break;
}
node1.setSelected(true);
}
}
class SelectNodeIdListener implements ItemListener {
@Override
public void itemStateChanged(ItemEvent ie) {
int statechange = ie.getStateChange();
Component source = (Component) ie.getSource();
if (statechange == ItemEvent.SELECTED) {
JRadioButton button = (JRadioButton) source;
nodeId = button.getText();
}
}
}
@Override
public String[] configurationIsCompleted() {
String err = null;
config.setNodeCount(nodeCount);
config.setNodeId(nodeId);
return (err == null) ? null : new String[] { err };
}
}