/* * (C) Copyright IBM Corp. 2009 * * LICENSE: Eclipse Public License v1.0 * http://www.eclipse.org/legal/epl-v10.html */ package com.ibm.gaiandb.apps.dashboard; import java.sql.Connection; import java.awt.BorderLayout; import java.awt.Component; import java.awt.Dimension; import java.awt.LayoutManager; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ScrollPaneConstants; import javax.swing.border.Border; import com.ibm.gaiandb.Util; public abstract class Tab extends JPanel { // Use PROPRIETARY notice if class contains a main() method, otherwise use COPYRIGHT notice. public static final String COPYRIGHT_NOTICE = "(c) Copyright IBM Corp. 2009"; private static final long serialVersionUID = -2799508810551303647L; private static String getInstallPathOrDot() { try { return Util.getInstallPath(); } catch ( Exception e ) { System.err.println("Unable to resolve GaianDB install path (Using '.' instead), cause: " + e); return "."; } } private static final String ICON_DIR = getInstallPathOrDot() + "/" + "resources/"; public static final Icon BACK_ICON = new ImageIcon(ICON_DIR + "back.png"); public static final Icon BACK_DISABLED_ICON = new ImageIcon(ICON_DIR + "back_disabled.png"); public static final Icon FORWARD_ICON = new ImageIcon(ICON_DIR + "forward.png"); public static final Icon FORWARD_DISABLED_ICON = new ImageIcon(ICON_DIR + "forward_disabled.png"); public static final Icon LOADING_ICON = new ImageIcon(ICON_DIR + "loading.gif"); public static final Icon WARNING_ICON = new ImageIcon(ICON_DIR + "warning.png"); public static final Icon ERROR_ICON = new ImageIcon(ICON_DIR + "error.png"); protected final Dashboard container; public Tab(Dashboard container) { this(container, new BorderLayout(Dashboard.BORDER_SIZE, Dashboard.BORDER_SIZE)); } public Tab(Dashboard container, LayoutManager layout) { super(layout); this.container = container; setBorder(Dashboard.DEFAULT_BORDER); } public abstract void connected(Connection newConn); public abstract void disconnected(); public abstract void activated(); public abstract void deactivated(); protected static JScrollPane createScroller(Component view, int width, int height) { return createScroller(view, BorderFactory.createEtchedBorder(), width, height); } protected static JScrollPane createScroller(Component view, Border border, int width, int height) { JScrollPane scroller = new JScrollPane(view); if (null != border) { scroller.setBorder(border); } if ( -1 < width || -1 < height ) scroller.setPreferredSize(new Dimension(width, height)); scroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED); return scroller; } protected static String unravelMessages(Throwable t) { StringBuilder message = new StringBuilder(); String lastMessage = null; while (null != t) { String currentMessage = t.getMessage(); if (!currentMessage.equals(lastMessage)) { message.append(currentMessage + "\n"); } lastMessage = currentMessage; t = t.getCause(); } return message.toString(); } }