package net.codjo.segmentation.releasetest;
import java.awt.Dimension;
import java.io.InputStream;
import java.util.Map;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableCellRenderer;
import net.codjo.i18n.gui.plugin.InternationalizationGuiPlugin;
import net.codjo.mad.client.plugin.MadConnectionPlugin;
import net.codjo.mad.client.request.RequestException;
import net.codjo.mad.client.request.Row;
import net.codjo.mad.gui.base.AbstractGuiPlugin;
import net.codjo.mad.gui.base.GuiConfiguration;
import net.codjo.mad.gui.base.MadGuiCore;
import net.codjo.mad.gui.plugin.MadGuiPlugin;
import net.codjo.mad.gui.request.DetailDataSource;
import net.codjo.mad.gui.request.RequestComboBox;
import net.codjo.mad.gui.util.ApplicationData;
import net.codjo.security.client.plugin.SecurityClientPlugin;
import net.codjo.security.gui.plugin.SecurityGuiPlugin;
import net.codjo.segmentation.gui.plugin.SegmentationGuiPlugin;
import net.codjo.segmentation.gui.results.SegmentationResultCustomizer;
import net.codjo.segmentation.gui.results.SegmentationResultWindowLogic;
import net.codjo.segmentation.gui.settings.ClassificationStructureGui;
import net.codjo.segmentation.gui.settings.ClassificationStructureLogic;
import net.codjo.segmentation.gui.settings.SegmentationSettingsCustomizer;
import net.codjo.segmentation.gui.wizard.AnomalyLogWindowCustomizer;
import net.codjo.segmentation.gui.wizard.ClassificationWizardWindow;
import net.codjo.segmentation.gui.wizard.LogWindowLogic;
import net.codjo.segmentation.gui.wizard.SegmentationWizardCustomizer;
import net.codjo.workflow.gui.plugin.WorkflowGuiPlugin;
/**
*/
public class SegmentationGuiTestMock {
// protected final UserMock userMock = new UserMock();
// protected ServerCore serverCore;
public static void main(String[] arguments) throws Exception {
final MadGuiCore guiCore = new MadGuiCore(SegmentationGuiTestMock.class.getResource("menu.xml"),
null);
guiCore.getConfiguration().setMainWindowSize(new Dimension(1100, 900));
guiCore.addPlugin(InternationalizationGuiPlugin.class);
guiCore.addPlugin(SecurityClientPlugin.class);
guiCore.addPlugin(MadConnectionPlugin.class);
guiCore.addPlugin(MadGuiPlugin.class);
guiCore.addPlugin(SecurityGuiPlugin.class);
guiCore.addPlugin(WorkflowGuiPlugin.class);
guiCore.addPlugin(SegmentationGuiPlugin.class);
guiCore.addPlugin(SegmentationGuiTestPlugin.class);
InputStream properties = SegmentationGuiTestMock.class.getResourceAsStream("/conf/application.properties");
ApplicationData applicationData = new ApplicationData(properties);
arguments = new String[]{applicationData.getDefaultLogin(),
applicationData.getDefaultPassword(),
"localhost", "35714"};
guiCore.show(arguments, applicationData);
}
public static class SegmentationGuiTestPlugin extends AbstractGuiPlugin {
public SegmentationGuiTestPlugin(SegmentationGuiPlugin plugin) {
plugin.getConfiguration().setWizardCustomizer(new MyWizardCustomizer());
plugin.getConfiguration()
.setClassificationAnomalyPreferenceId("TestClassificationAnomalyWindow");
plugin.getConfiguration().setMaximumNodeDepth(4);
plugin.getConfiguration().setResultCustomizer(new MyResultCustomizer());
plugin.getConfiguration().setAnomalyLogWindowCustomizer(new MyAnomalyLogWindowCustomizer());
/***********************************************************************************************************/
/* Exemple d'utilisation du ClassificationSettingsCustomizer */
/* Ex1: plugin.getConfiguration().setSettingsCustomizer(new MyClassificationSettingsCustomizer()); */
/* Ex2: plugin.getConfiguration().setSettingsCustomizer(new ClassificationSettingsCustomizerWithMyPanel());*/
/***********************************************************************************************************/
}
public void initGui(GuiConfiguration configuration) throws Exception {
}
}
private static class MyWizardCustomizer implements SegmentationWizardCustomizer {
private JTextField keyField;
public void customizeWindow(ClassificationWizardWindow wizardWindow) {
keyField = new JTextField(25);
keyField.setName("keyField");
wizardWindow.addCustomField("Key",
keyField,
new MyComponentValidator(),
new MySegmentationJobRequestFiller());
wizardWindow.setInfoField("Ceci est un label pour dire rien du tout.");
}
private class MyComponentValidator implements ClassificationWizardWindow.ComponentValidator {
public boolean isComponentValid() {
return true;
}
}
private class MySegmentationJobRequestFiller
implements ClassificationWizardWindow.SegmentationJobRequestFiller {
public void fillRequest(Map<String, String> mapParameters) {
mapParameters.put("myKey", keyField.getText());
}
}
}
private static class MyResultCustomizer implements SegmentationResultCustomizer {
public void customizeWindow(SegmentationResultWindowLogic resultWindowLogic) {
JTextField keyField = new JTextField(10);
keyField.setName("keyField");
resultWindowLogic.addCustomFilterField("Key", "myKey", keyField);
resultWindowLogic.addGoButton();
}
}
private static class MyAnomalyLogWindowCustomizer implements AnomalyLogWindowCustomizer {
public void customizeWindow(LogWindowLogic anomalyLogWindowLogic) {
anomalyLogWindowLogic.getGui().getTable()
.setCellRenderer("sleeveCode", new MySimpleTableCellRenderer());
}
}
private static class MySimpleTableCellRenderer extends DefaultTableCellRenderer {
@Override
protected void setValue(Object value) {
if ("".equals(value.toString().trim())) {
setText("-");
}
else {
setText(value.toString());
}
}
}
@SuppressWarnings({"UnusedDeclaration"})
private static class MyClassificationSettingsCustomizer implements SegmentationSettingsCustomizer {
public void doPreDataSourceInit(ClassificationStructureLogic structureLogic,
DetailDataSource dataSource)
throws RequestException {
JComboBox myCustomizedCombo = new JComboBox();
JTextField myCustomizedField = new JTextField(5);
myCustomizedField.setPreferredSize(new Dimension(20, 20));
myCustomizedField.setMinimumSize(new Dimension(20, 20));
myCustomizedField.setMaximumSize(new Dimension(20, 20));
myCustomizedCombo.addItem("1");
myCustomizedCombo.addItem("2");
myCustomizedCombo.addItem("3");
RequestComboBox myCustomizedRequest = RequestComboBox.createRequestComboBox("toto", "toto", true);
Row newRow = new Row();
newRow.addField("toto", "1");
myCustomizedRequest.getDataSource().addRow(newRow);
newRow = new Row();
newRow.addField("toto", "2");
myCustomizedRequest.getDataSource().addRow(newRow);
myCustomizedField.setColumns(5);
structureLogic.addClassificationExtensionField("Custom combo", "myCombo", myCustomizedCombo);
structureLogic
.addClassificationExtensionField("Custom combo REquest", "toto", myCustomizedRequest);
structureLogic.addClassificationExtensionField("Custom field", "myField", myCustomizedField);
myCustomizedCombo.setSelectedIndex(1);
}
public void doPostDataSourceInit(ClassificationStructureLogic structureLogic,
DetailDataSource dataSource)
throws RequestException {
}
}
@SuppressWarnings({"UnusedDeclaration"})
private static class ClassificationSettingsCustomizerWithMyPanel
implements SegmentationSettingsCustomizer {
public void doPreDataSourceInit(ClassificationStructureLogic structureLogic,
DetailDataSource dataSource)
throws RequestException {
addCustomPanel(structureLogic);
}
private void addCustomPanel(ClassificationStructureLogic structureLogic) {
ClassificationStructureGui structureGui = structureLogic.getGui();
structureGui.setClassificationExtensionPanel(new ClassificationGuiCustomizer().getMainPanel());
}
public void doPostDataSourceInit(ClassificationStructureLogic structureLogic,
DetailDataSource dataSource)
throws RequestException {
}
}
}