/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * CoolObjectRenderer.java * * Created on 13. September 2007, 11:17 */ package de.cismet.cids.tools.metaobjectrenderer; import com.vividsolutions.jts.geom.Geometry; import org.jdesktop.swingx.graphics.ReflectionRenderer; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.GradientPaint; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.image.BufferedImage; import javax.swing.Icon; import javax.swing.ImageIcon; import de.cismet.cismap.commons.BoundingBox; import de.cismet.cismap.commons.raster.wms.simple.SimpleWMS; import de.cismet.cismap.commons.retrieval.RetrievalEvent; import de.cismet.cismap.commons.retrieval.RetrievalListener; import de.cismet.tools.Static2DTools; /** * DOCUMENT ME! * * @author hell * @version $Revision$, $Date$ */ public abstract class CoolObjectRenderer extends CustomMetaObjectRenderer { //~ Instance fields -------------------------------------------------------- protected Image map; protected ImageIcon rechtsOben; protected SimpleWMS swms; private final org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger(this.getClass()); private Geometry geometry = null; //~ Constructors ----------------------------------------------------------- /** * Creates new form CoolObjectRenderer. */ public CoolObjectRenderer() { initComponents(); try { final SAXBuilder builder = new SAXBuilder(false); final Document doc = builder.build(getClass().getResource("/coolobjectrenderer/backgroundWMS.xml")); // NOI18N final Element prefs = doc.getRootElement(); swms = new SimpleWMS(prefs); swms.addRetrievalListener(new RetrievalListener() { @Override public void retrievalAborted(final RetrievalEvent retrievalEvent) { } @Override public void retrievalComplete(final RetrievalEvent retrievalEvent) { if (log.isDebugEnabled()) { log.debug("completed"); // NOI18N } final Object o = retrievalEvent.getRetrievedObject(); if (o instanceof Image) { map = (Image)o; final float opacity = 0.8f; final float fadeHeight = 0.3f; final BufferedImage erg = new BufferedImage( map.getWidth(null), map.getHeight(null), BufferedImage.TYPE_4BYTE_ABGR); final Graphics2D rg = erg.createGraphics(); rg.drawImage(map, null, null); rg.setComposite(AlphaComposite.getInstance(AlphaComposite.DST_IN)); rg.setPaint( new GradientPaint( 0, (float)(map.getHeight(null) / 2), new Color(0.0f, 0.0f, 0.0f, 0.0f), (float)(map.getWidth(null) / 2), (float)(map.getHeight(null) / 2), new Color(0.0f, 0.0f, 0.0f, .7f), true)); rg.fillRect(0, 0, map.getWidth(null), map.getHeight(null)); rg.setPaint( new GradientPaint( (float)(map.getWidth(null) / 2), 0, new Color(0.0f, 0.0f, 0.0f, 0.0f), (float)(map.getWidth(null) / 2), (float)(map.getHeight(null) / 2), new Color(0.0f, 0.0f, 0.0f, .7f), true)); rg.fillRect(0, 0, map.getWidth(null), map.getHeight(null)); rg.dispose(); map = erg; repaint(); } else { log.warn("no image"); // NOI18N } } @Override public void retrievalError(final RetrievalEvent retrievalEvent) { log.error("error" + retrievalEvent.getErrorType()); // NOI18N } @Override public void retrievalProgress(final RetrievalEvent retrievalEvent) { } @Override public void retrievalStarted(final RetrievalEvent retrievalEvent) { if (log.isDebugEnabled()) { log.debug("retrievalStarted"); // NOI18N } } }); } catch (Exception e) { log.error("Error during loading of the map info", e); // NOI18N } this.addComponentListener(new ComponentListener() { @Override public void componentHidden(final ComponentEvent e) { } @Override public void componentMoved(final ComponentEvent e) { } @Override public void componentResized(final ComponentEvent e) { mapIt(); } @Override public void componentShown(final ComponentEvent e) { mapIt(); } }); } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param icon DOCUMENT ME! */ protected void setImageRechtsOben(final javax.swing.ImageIcon icon) { try { final ReflectionRenderer renderer = new ReflectionRenderer(0.5f, 0.4f, true); final BufferedImage tmp = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_4BYTE_ABGR); final Graphics g = tmp.createGraphics(); g.drawImage(icon.getImage(), 0, 0, null); g.dispose(); final BufferedImage ref = renderer.appendReflection(tmp); System.out.println(ref.getHeight()); final ImageIcon bild2 = new ImageIcon(ref); rechtsOben = bild2; } catch (Exception e) { log.error("Error during loading of the LocationtypeImage", e); // NOI18N rechtsOben = null; } } /** * This method is called from within the constructor to initialize the form. WARNING: Do NOT modify this code. The * content of this method is always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents private void initComponents() { final javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 400, Short.MAX_VALUE)); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0, 300, Short.MAX_VALUE)); } // </editor-fold>//GEN-END:initComponents /** * DOCUMENT ME! */ private void mapIt() { if (log.isDebugEnabled()) { log.debug("MAPIT"); // NOI18N } try { if (geometry != null) { BoundingBox bb = new BoundingBox(geometry.buffer(40d)); final double midX = bb.getX1() + ((bb.getX2() - bb.getX1()) / 2); final double midY = bb.getY1() + ((bb.getY2() - bb.getY1()) / 2); double realWorldWidth = bb.getWidth(); double realWorldHeight = bb.getHeight(); final double widthToHeightRatio = getWidth() / getHeight(); if ((widthToHeightRatio / (realWorldWidth / realWorldHeight)) > 1) { // height is bestimmer ;-) realWorldWidth = realWorldHeight * widthToHeightRatio; } else { realWorldHeight = realWorldWidth * widthToHeightRatio; } bb = new BoundingBox(midX - (realWorldWidth / 2), midY - (realWorldHeight / 2), midX + (realWorldWidth / 2), midY + (realWorldHeight / 2)); swms.setBoundingBox(bb); swms.setSize(getHeight(), getWidth()); swms.retrieve(true); } else { } } catch (Exception e) { log.warn("Error while displaying the map.", e); // NOI18N } } @Override public void paintComponent(final Graphics g) { super.paintComponent(g); if (map != null) { g.drawImage(map, 0, 0, null); } else { log.info("map==null"); // NOI18N } g.setColor(Color.WHITE); // g.drawLine(0,0,getWidth(),0); // g.drawLine(0,getHeight()-1,getWidth(),getHeight()-1); ((Graphics2D)g).setPaint(new GradientPaint( 0, 0, Static2DTools.getAlphaColor(this.getBackground().darker(), 150), 0, 60, Static2DTools.getAlphaColor(this.getBackground(), 150))); // g.setColor(new Color(230,230,230,150)); g.fillRect(0, 5, getWidth(), 55); // ((Graphics2D)g).setPaint(new // GradientPaint(0,getHeight()-60,Static2DTools.getAlphaColor(this.getBackground().darker(),150),0,getHeight(),Static2DTools.getAlphaColor(this.getBackground(),150))); final Color to = Static2DTools.getAlphaColor(this.getBackground().darker(), 150); final Color from = Static2DTools.getAlphaColor(this.getBackground(), 150); ((Graphics2D)g).setPaint(new GradientPaint(0, getHeight() - 60, from, 0, getHeight(), to)); g.fillRect(0, getHeight() - 60, getWidth(), 55); if (rechtsOben != null) { g.drawImage(rechtsOben.getImage(), getWidth() - rechtsOben.getIconWidth() - 10, 10, null); } // Rectangle r=StaticSwingTools.getComponentsExtent(lblStrasse,lblPLZOrt,lblTel,lblFax,jLabel3,jLabel4,jLabel5); // // g.setColor(new Color(250,250,250,100)); // g.fillRoundRect((int)r.getX()-5,(int)r.getY()-5,(int)r.getWidth()+10,(int)r.getHeight()+10,10,10); } // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public Geometry getGeometry() { return geometry; } /** * DOCUMENT ME! * * @param geometry DOCUMENT ME! */ public void setGeometry(final Geometry geometry) { this.geometry = geometry; } }