/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ package de.cismet.tools.gui.breadcrumb; import org.jdesktop.swingx.JXHyperlink; import java.util.List; import javax.swing.ImageIcon; import javax.swing.JLabel; /** * DOCUMENT ME! * * @author thorsten * @version $Revision$, $Date$ */ public final class LinkStyleBreadCrumbGui extends javax.swing.JPanel { //~ Instance fields -------------------------------------------------------- private final transient ImageIcon arrow; private transient JXHyperlink first; private transient BreadCrumbModel breadCrumbModel; private transient boolean showFirstCrumbAlone; //~ Constructors ----------------------------------------------------------- /** * Creates new form LinkStyleBreadCrumbGui. */ public LinkStyleBreadCrumbGui() { this(new DefaultBreadCrumbModel()); } /** * Creates a new LinkStyleBreadCrumbGui object. * * @param breadCrumbModel DOCUMENT ME! */ public LinkStyleBreadCrumbGui(final BreadCrumbModel breadCrumbModel) { initComponents(); arrow = new ImageIcon(getClass().getResource("/de/cismet/tools/gui/res/arrowRight.png")); // NOI18N showFirstCrumbAlone = false; first = null; setBreadCrumbModel(breadCrumbModel); } //~ Methods ---------------------------------------------------------------- /** * 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() { setOpaque(false); setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT)); } // </editor-fold>//GEN-END:initComponents /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public BreadCrumbModel getBreadCrumbModel() { return breadCrumbModel; } /** * DOCUMENT ME! * * @param breadCrumbModel DOCUMENT ME! */ public void setBreadCrumbModel(final BreadCrumbModel breadCrumbModel) { this.breadCrumbModel = breadCrumbModel; breadCrumbModel.addBreadCrumbModelListener(new AbstractBreadCrumbModelListener() { @Override public void breadCrumbModelChanged(final BreadCrumbEvent bce) { LinkStyleBreadCrumbGui.this.removeAll(); LinkStyleBreadCrumbGui.this.revalidate(); final BreadCrumbModel m = bce.getSource(); final List<BreadCrumb> l = m.getAllCrumbs(); for (final BreadCrumb bc : l) { addToGui(bc); } } @Override public void breadCrumbAdded(final BreadCrumbEvent bce) { final BreadCrumb bc = bce.getBreadCrumb(); addToGui(bc); } }); } /** * DOCUMENT ME! * * @return DOCUMENT ME! */ public boolean isShowFirstCrumbAlone() { return showFirstCrumbAlone; } /** * DOCUMENT ME! * * @param showFirstCrumbAlone DOCUMENT ME! */ public void setShowFirstCrumbAlone(final boolean showFirstCrumbAlone) { this.showFirstCrumbAlone = showFirstCrumbAlone; } /** * DOCUMENT ME! * * @param bc DOCUMENT ME! */ private void addToGui(final BreadCrumb bc) { if ((breadCrumbModel.getSize() > 0) && (breadCrumbModel.getFirstCrumb() != bc)) { final JLabel arrowL = new JLabel(arrow); LinkStyleBreadCrumbGui.this.add(arrowL); } final JXHyperlink bcLink = new JXHyperlink(bc); bcLink.setClickedColor(bcLink.getUnclickedColor()); bcLink.setFocusPainted(false); LinkStyleBreadCrumbGui.this.add(bcLink); if (!showFirstCrumbAlone) { if (breadCrumbModel.getSize() == 1) { first = bcLink; first.setVisible(false); } else { first.setVisible(true); } } } // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables }