/***************************************************
*
* cismet GmbH, Saarbruecken, Germany
*
* ... and it just works.
*
****************************************************/
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package de.cismet.cids.custom.objecteditors;
import Sirius.navigator.resource.PropertyManager;
import Sirius.navigator.ui.RequestsFullSizeComponent;
import org.apache.log4j.Logger;
import java.awt.BorderLayout;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.border.EmptyBorder;
import de.cismet.cids.tools.metaobjectrenderer.BlurredMapObjectRenderer;
import de.cismet.cids.tools.metaobjectrenderer.BlurredMapWrapper;
import de.cismet.cids.tools.metaobjectrenderer.Titled;
import de.cismet.tools.gui.BorderProvider;
import de.cismet.tools.gui.ComponentWrapper;
import de.cismet.tools.gui.CoolEditor;
import de.cismet.tools.gui.FooterComponentProvider;
import de.cismet.tools.gui.TitleComponentProvider;
import de.cismet.tools.gui.WrappedComponent;
/**
* DOCUMENT ME!
*
* @author thorsten
* @version $Revision$, $Date$
*/
public class EditorWrapper implements ComponentWrapper {
//~ Static fields/initializers ---------------------------------------------
private static final Logger log = Logger.getLogger(EditorWrapper.class);
//~ Methods ----------------------------------------------------------------
@Override
public WrappedComponent wrapComponent(final JComponent component) {
component.setBorder(new EmptyBorder(10, 10, 10, 10));
final CoolEditor ced;
if ((component instanceof BlurredMapObjectRenderer)) {
if (!((BlurredMapObjectRenderer)component).usePainterCoolPanel) {
component.setBorder(new EmptyBorder(0, 0, 0, 0));
return (BlurredMapObjectRenderer)component;
}
final BlurredMapObjectRenderer cp = (BlurredMapObjectRenderer)component;
final BlurredMapWrapper wrappingComp;
if (component instanceof RequestsFullSizeComponent) {
wrappingComp = new FullSizeBlurredMapWrapper();
} else {
wrappingComp = new BlurredMapWrapper();
}
wrappingComp.setGeometry(cp.getGeometry());
final JComponent p = cp.getPanInter();
if (p != null) {
wrappingComp.getPanFooter().add(p);
}
if (cp.getSpinner() != null) {
wrappingComp.setPanSpinner(cp.getSpinner());
}
if (cp.getPanMap() != null) {
wrappingComp.getPanMap().add(cp.getPanMap(), BorderLayout.CENTER);
wrappingComp.getPanMap().setPreferredSize(cp.getPanMap().getMinimumSize());
}
wrappingComp.getPanTitleAndIcon().add(cp.getPanTitle());
wrappingComp.getPanContent().add(cp.getPanContent(), BorderLayout.CENTER);
wrappingComp.setOriginalComponent(component);
return (WrappedComponent)wrappingComp;
} else {
if (component instanceof RequestsFullSizeComponent) {
// tagging interface fue full size an umschliessende komponente "weitervererben"
ced = new FullSizeCoolEditor();
} else {
ced = new CoolEditor();
}
}
if (component instanceof BorderProvider) {
final BorderProvider borderProvider = (BorderProvider)component;
ced.getPanEdit().setBorder(borderProvider.getCenterrBorder());
ced.getPanFooter().setBorder(borderProvider.getFooterBorder());
ced.getPanTitleAndIcon().setBorder(borderProvider.getTitleBorder());
}
ced.setOriginalComponent(component);
component.setOpaque(false);
ced.getPanEdit().add(component, BorderLayout.CENTER);
if (component instanceof TitleComponentProvider) {
ced.getPanTitleAndIcon().add(((TitleComponentProvider)component).getTitleComponent());
} else if (component instanceof Titled) {
final JLabel l = new JLabel(((Titled)component).getTitle());
l.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
l.setForeground(new java.awt.Color(255, 255, 255));
ced.getPanTitleAndIcon().add(l);
}
if (component instanceof FooterComponentProvider) {
final JComponent comp = ((FooterComponentProvider)component).getFooterComponent();
if (comp != null) {
ced.getPanFooter().add(comp);
}
}
return ced;
}
//~ Inner Classes ----------------------------------------------------------
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
private static final class FullSizeCoolEditor extends CoolEditor implements RequestsFullSizeComponent {
// existiert nur um FullSize tagging interface an die umschliessende Komponente zu "vererben"
}
/**
* DOCUMENT ME!
*
* @version $Revision$, $Date$
*/
private static final class FullSizeBlurredMapWrapper extends BlurredMapWrapper
implements RequestsFullSizeComponent {
// existiert nur um FullSize tagging interface an die umschliessende Komponente zu "vererben"
}
}