package org.trianacode.gui.desktop.frames; import org.trianacode.gui.desktop.DesktopView; import org.trianacode.gui.main.TaskGraphPanel; import javax.swing.*; import javax.swing.border.*; import java.awt.*; /** * @author Andrew Harrison * @version 1.0.0 Nov 10, 2010 */ public class FramesView extends JInternalFrame implements DesktopView { private TaskGraphPanel panel; public FramesView(TaskGraphPanel panel) { super(panel.getTaskGraph().getToolName(), true, true, true, false); this.panel = panel; JScrollPane scrollerForMainTriana = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); scrollerForMainTriana.setViewportView(panel.getContainer()); Border b = new EtchedBorder(EtchedBorder.RAISED, Color.blue, Color.gray); scrollerForMainTriana.setViewportBorder(b); scrollerForMainTriana.doLayout(); setLayout(new BorderLayout()); getContentPane().add(scrollerForMainTriana); if (getBorder() instanceof CompoundBorder) { // fix for big spaces around frames on mac - not perfect if ("Aqua".equals(UIManager.getLookAndFeel().getID())) { CompoundBorder cb = (CompoundBorder) getBorder(); setBorder(new CompoundBorder(new EmptyBorder(0, 0, 1, 1), cb.getInsideBorder())); } } } @Override public TaskGraphPanel getTaskgraphPanel() { return panel; } private static class ShadowBorder extends AbstractBorder { private static final Insets INSETS = new Insets(0, 0, 1, 1); public Insets getBorderInsets(Component c) { return INSETS; } public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) { Color shadow = UIManager.getColor("controlShadow"); if (shadow == null) { shadow = Color.GRAY; } g.translate(x, y); g.setColor(shadow); g.fillRect(w - 1, 3, 1, h - 3); g.fillRect(3, h - 1, w - 2, 1); // g.fillRect(w, 1, 1, h - 1); // g.fillRect(1, h - 1, w, 1); g.translate(-x, -y); } } }