/*
* codjo.net
*
* Common Apache License 2.0
*/
package net.codjo.segmentation.gui.editor;
import net.codjo.gui.toolkit.util.Modal;
import net.codjo.mad.gui.framework.AbstractGuiAction;
import net.codjo.mad.gui.framework.GuiContext;
import net.codjo.segmentation.gui.preference.PreferenceGui;
import java.awt.event.ActionEvent;
import java.beans.PropertyVetoException;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
/**
* Action permettant d'afficher l'editeur d'expression pour les traitements. Cette classe fera partie de
* codjo-database-gui.
*/
public class SegmentationEditorAction extends AbstractGuiAction {
private EditorManager editorManager;
private String selectedSleeveRowId;
private String selectedClassificationId;
public SegmentationEditorAction(GuiContext ctxt) {
super(ctxt, "Edition de l'expression",
"Assistant permettant de faciliter l'�dition d'une expression ");
putValue(ID_PROPERTY, "segmentation.edit.expression");
}
public EditorManager getEditorManager() {
return editorManager;
}
public void setEditorManager(EditorManager editorManager) {
this.editorManager = editorManager;
}
public void actionPerformed(ActionEvent event) {
displayEditor();
}
private void displayEditor() {
EditorConfig config = editorManager.editorStart();
final EditorWindow editor =
new EditorWindow(config.getPreference(), editorManager, selectedClassificationId,
selectedSleeveRowId);
EditorEventManager editorEventManager =
new EditorEventManager(editor.getEditorMainPanelLogic());
editor.getEditorMainPanelLogic().addExternalPanel(editorManager.getPanel(
editorEventManager));
editor.getEditorMainPanelLogic().addLeftPanel(editorManager.getLeftPanel(
editorEventManager));
editor.setExpression(config.getExpression());
// editor.setSize(1000, 700);
// editor.setLocation(100, 100);
getGuiContext().getDesktopPane().add(editor);
Modal.applyModality(config.getParentEditor(), editor);
editor.setVisible(true);
editor.setClosable(true);
select(editor);
editor.moveToFront();
}
private void select(EditorWindow editor) {
try {
editor.setSelected(true);
}
catch (PropertyVetoException error) {
; // Pas grave
}
}
public void setSelectedSleeveRowId(String selectedSleeveRowId) {
this.selectedSleeveRowId = selectedSleeveRowId;
}
public void setSelectedClassificationId(String selectedClassificationId) {
this.selectedClassificationId = selectedClassificationId;
}
/**
* Repr�sente le manager d'une session d'�dition d'une expression. Le manager donne l'ancienne expression
* et recois la nouvell.
*/
public interface EditorManager {
// TODO Cette interface devrait �tre revue en ce qui concerne le
// getPanel et le panel.
public EditorConfig editorStart();
/**
* Retourne la section valeur du tab colonne et valeur. TODO Revoir la signature de cette interface
*/
public JPanel getPanel(EditorEventManager listenerManager);
/**
* Retourne le tab des axes, TODO Revoir la signature de cette interface
*/
public JPanel getLeftPanel(EditorEventManager manager);
public boolean editorOk(String newExpression);
}
/**
* Repr�sente une configuration permettant d'afficher l'�diteur d'expression.
*/
public static class EditorConfig {
private PreferenceGui preference;
private String expression;
private JInternalFrame parentEditor;
public EditorConfig(PreferenceGui preference, String expression,
JInternalFrame parent) {
this.preference = preference;
this.expression = expression;
this.parentEditor = parent;
}
public JInternalFrame getParentEditor() {
return parentEditor;
}
public PreferenceGui getPreference() {
return preference;
}
public String getExpression() {
return expression;
}
}
}