/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package de.cismet.tools.gui.panels; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Dimension; import java.awt.LayoutManager; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JLayeredPane; import javax.swing.JPanel; /** * DOCUMENT ME! * * @author daniel * @version $Revision$, $Date$ */ public class LayeredAlertPanel extends javax.swing.JPanel { //~ Instance fields -------------------------------------------------------- private int offset = 5; private int topOffset = 5; private JPanel contentPanel; private JPanel alert; // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLayeredPane layeredPane; // End of variables declaration//GEN-END:variables //~ Constructors ----------------------------------------------------------- /** * Creates new form LayeredAlertPanel. */ public LayeredAlertPanel() { this(new JPanel(), new JPanel()); } /** * Creates a new LayeredAlertPanel object. * * @param component DOCUMENT ME! * @param alert DOCUMENT ME! */ public LayeredAlertPanel(final JPanel component, final JPanel alert) { this(component, alert, 5); } /** * Creates a new LayeredAlertPanel object. * * @param component DOCUMENT ME! * @param alert DOCUMENT ME! * @param offset DOCUMENT ME! */ public LayeredAlertPanel(final JPanel component, final JPanel alert, final int offset) { initComponents(); this.offset = offset; this.contentPanel = component; this.alert = alert; this.layeredPane.setLayout(new LayeredAlertLayoutManager()); if ((contentPanel != null) && (alert != null)) { layeredPane.add(contentPanel, JLayeredPane.DEFAULT_LAYER); layeredPane.add(alert, JLayeredPane.POPUP_LAYER); } } //~ Methods ---------------------------------------------------------------- /** * DOCUMENT ME! * * @param offset DOCUMENT ME! */ public void setOffset(final int offset) { this.offset = offset; } /** * DOCUMENT ME! * * @param topOffset DOCUMENT ME! */ public void setTopOffset(final int topOffset) { this.topOffset = topOffset; } /** * DOCUMENT ME! * * @param args DOCUMENT ME! */ public static void main(final String[] args) { final JFrame f = new JFrame(); f.setSize(500, 500); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JPanel contentPanel = new JPanel(); contentPanel.setLayout(new BorderLayout()); contentPanel.setBackground(Color.WHITE); contentPanel.setOpaque(true); contentPanel.add(new JLabel("Content panel"), BorderLayout.CENTER); final AlertPanel alert = new AlertPanel( AlertPanel.TYPE.DANGER, new JLabel( "Warnung! Es wurde kein Dokument gefunden. Klicken Sie auf diese Meldung um eine Weiterleitung einzurichten."), true); alert.setPreferredSize(new Dimension(100, 50)); alert.setMinimumSize(new Dimension(100, 50)); alert.setMaximumSize(new Dimension(100, 50)); final JPanel p = new LayeredAlertPanel(contentPanel, alert); f.getContentPane().add(p); f.setVisible(true); } /** * 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. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { layeredPane = new javax.swing.JLayeredPane(); setLayout(new java.awt.BorderLayout()); final javax.swing.GroupLayout layeredPaneLayout = new javax.swing.GroupLayout(layeredPane); layeredPane.setLayout(layeredPaneLayout); layeredPaneLayout.setHorizontalGroup( layeredPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 400, Short.MAX_VALUE)); layeredPaneLayout.setVerticalGroup( layeredPaneLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap( 0, 300, Short.MAX_VALUE)); add(layeredPane, java.awt.BorderLayout.CENTER); } // </editor-fold>//GEN-END:initComponents //~ Inner Classes ---------------------------------------------------------- /** * DOCUMENT ME! * * @version $Revision$, $Date$ */ private final class LayeredAlertLayoutManager implements LayoutManager { //~ Methods ------------------------------------------------------------ @Override public void addLayoutComponent(final String name, final Component comp) { } @Override public void removeLayoutComponent(final Component comp) { } @Override public Dimension preferredLayoutSize(final Container parent) { return new Dimension(100, 100); } @Override public Dimension minimumLayoutSize(final Container parent) { return new Dimension(100, 100); } @Override public void layoutContainer(final Container parent) { contentPanel.setBounds(0, 0, parent.getWidth(), parent.getHeight()); alert.setBounds(2, 0, parent.getWidth() - 4, alert.getPreferredSize().height); // alert.setBounds(offset, topOffset, parent.getWidth() - (2 * offset), alert.getPreferredSize().height); } } }