package net.codjo.dataprocess.gui.util.fexplorer;
import net.codjo.dataprocess.common.Log;
import net.codjo.dataprocess.gui.util.GuiUtils;
import net.codjo.gui.toolkit.util.GuiUtil;
import net.codjo.mad.gui.framework.AbstractGuiAction;
import net.codjo.mad.gui.framework.GuiContext;
import java.awt.event.ActionEvent;
import java.beans.PropertyVetoException;
import javax.swing.JInternalFrame;
import javax.swing.UIManager;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
/**
*
*/
public class FExplorerAction extends AbstractGuiAction {
private CleanUpListener cleanUpListener = new CleanUpListener();
private JInternalFrame frame;
private GuiContext ctxt;
private boolean centerWindow;
public FExplorerAction(GuiContext ctxt) {
super(ctxt, "Explorateur de fichiers", "Explorateur de fichiers");
this.ctxt = ctxt;
}
public void actionPerformed(ActionEvent event) {
if (frame == null) {
displayNewWindow();
}
else {
try {
frame.setSelected(true);
}
catch (PropertyVetoException ex) {
Log.error(getClass(), ex);
}
}
}
private void displayNewWindow() {
try {
frame = new FExplorerDetailWindow(ctxt);
frame.addInternalFrameListener(cleanUpListener);
getDesktopPane().add(frame);
frame.setFrameIcon(UIManager.getIcon("icon"));
if (centerWindow) {
GuiUtil.centerWindow(frame);
}
frame.setVisible(true);
frame.setSelected(true);
}
catch (Exception ex) {
GuiUtils.showErrorDialog(getDesktopPane(), getClass(), "Impossible d'afficher l'IHM", ex);
}
}
public JInternalFrame getFrame() {
return frame;
}
protected void setCenterWindow(boolean centerWindow) {
this.centerWindow = centerWindow;
}
private class CleanUpListener extends InternalFrameAdapter {
@Override
public void internalFrameClosed(InternalFrameEvent event) {
event.getInternalFrame().removeInternalFrameListener(this);
frame = null;
}
@Override
public void internalFrameClosing(InternalFrameEvent event) {
event.getInternalFrame().removeInternalFrameListener(this);
frame = null;
}
}
}