From 078d75406ca983141627d87da5a49bd29abe4023 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Fri, 06 Sep 2019 17:52:08 -0400
Subject: [PATCH] FileObject big data.
---
timeflow/app/ui/LinkTabPane.java | 414 +++++++++++++++++++++++++++++++---------------------------
1 files changed, 219 insertions(+), 195 deletions(-)
diff --git a/timeflow/app/ui/LinkTabPane.java b/timeflow/app/ui/LinkTabPane.java
index 1f4ee01..911461c 100755
--- a/timeflow/app/ui/LinkTabPane.java
+++ b/timeflow/app/ui/LinkTabPane.java
@@ -8,201 +8,225 @@
import java.util.*;
// custom JTabbedPane-like thing.
-public class LinkTabPane extends JPanel {
-
- ArrayList<String> tabNames=new ArrayList<String>();
- HashMap<String, JComponent> tabMap=new HashMap<String, JComponent>();
- String currentName;
- CardLayout cards=new CardLayout();
- JPanel center=new JPanel();
- LinkTop top=new LinkTop();
-
- public LinkTabPane()
- {
- setBackground(Color.white);
- setLayout(new BorderLayout());
- add(top, BorderLayout.NORTH);
- add(center, BorderLayout.CENTER);
- center.setLayout(cards);
- top.addMouseListener(new MouseAdapter() {
- @Override
- public void mousePressed(MouseEvent e) {
- String s=top.getName(e.getX());
- if (s!=null)
- {
- String old=currentName;
- setCurrentName(s);
- firePropertyChange("tab", old, s);
- }
- }});
- }
-
- public String getTitleAt(int i)
- {
- return tabNames.get(i);
- }
-
- public void setSelectedIndex(int i)
- {
- setCurrentName(getTitleAt(i));
- }
-
- public void addTab(JComponent component, String name, boolean left)
- {
- tabNames.add(name);
- tabMap.put(name, component);
- center.add(component, name);
- top.addName(name, left);
- repaint();
- if (currentName==null)
- currentName=name;
- }
-
- public String getCurrentName()
- {
- return currentName;
- }
-
- public void setCurrentName(final String currentName)
- {
- this.currentName=currentName;
- top.repaint();
- SwingUtilities.invokeLater(new Runnable() {public void run() {cards.show(center, currentName);}});
+public class LinkTabPane extends JPanel
+{
- }
-
- class LinkTop extends JPanel
- {
- int left, right;
- ArrayList<HotLink> leftHots=new ArrayList<HotLink>();
- ArrayList<HotLink> rightHots=new ArrayList<HotLink>();
- Font font=new Font("Verdana", Font.PLAIN, 14);
- FontMetrics fm=getFontMetrics(font);
-
- LinkTop()
- {
- setLayout(new FlowLayout(FlowLayout.LEFT));
- setBackground(new Color(220,220,220));
- }
-
- public void paintComponent(Graphics g1)
- {
- int w=getSize().width, h=getSize().height;
- Graphics2D g=(Graphics2D)g1;
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
- g.setColor(getBackground());
- g.fillRect(0,0,w,h);
- g.setColor(Color.gray);
- for (int i=0; i<2; i++)
- {
- g.drawLine(0,i,w,i);
- g.drawLine(0,h-1-i,w,h-1-i);
- }
-
- for (HotLink hot: leftHots)
- {
- draw(g, hot, h, 0);
- }
-
- for (HotLink hot: rightHots)
- {
- draw(g, hot, h, w);
- }
-
- for (int i=0; i<leftHots.size(); i++)
- {
-
- if (i<leftHots.size()-1)
- {
- HotLink hot=leftHots.get(i);
- for (int j=0; j<1; j++)
- g.drawLine(hot.x+hot.width-1-j, 7, hot.x+hot.width-1-j, h-7);
- }
- }
-
- for (int i=0; i<rightHots.size(); i++)
- {
-
- if (i<rightHots.size()-1)
- {
- HotLink hot=rightHots.get(i);
- for (int j=0; j<1; j++)
- g.drawLine(hot.x+w-1-j, 7, hot.x+w-1-j, h-7);
- }
- }
- }
-
- void draw(Graphics g, HotLink hot, int h, int dx)
- {
- int x=hot.x+dx;
- if (hot.s.equals(currentName))
- {
- g.setColor(Color.lightGray);
- g.fillRect(x,2,hot.width,h-4);
- g.setColor(Color.gray);
- g.drawLine(x-1, 0, x-1, h);
- g.drawLine(x+hot.width-1, 0, x+hot.width-1, h);
- }
- g.setColor(Color.darkGray);
- g.setFont(font);
- int sw=fm.stringWidth(hot.s);
- g.drawString(hot.s, x+(hot.width-sw)/2, h-10);
-
- }
-
- String getName(int x)
- {
- for (HotLink h: leftHots)
- {
- if (h.x<=x && h.x+h.width>x)
- return h.s;
- }
- for (HotLink h: rightHots)
- {
- int w=getSize().width;
- if (h.x+w<=x && h.x+h.width+w>x)
- return h.s;
- }
+ ArrayList<String> tabNames = new ArrayList<String>();
+ HashMap<String, JComponent> tabMap = new HashMap<String, JComponent>();
+ String currentName;
+ CardLayout cards = new CardLayout();
+ JPanel center = new JPanel();
+ LinkTop top = new LinkTop();
- if (leftHots.size()>0)
- return leftHots.get(leftHots.size()-1).s;
- if (rightHots.size()>0)
- return rightHots.get(0).s;
- return null;
- }
-
- void addName(String name, boolean leftward)
- {
- if (leftward)
- {
- int x=right;
- int w=fm.stringWidth(name)+24;
- leftHots.add(new HotLink(name, x, 0, w, 30));
- right+=w;
- }
- else
- {
- int x=left;
- int w=fm.stringWidth(name)+24;
- rightHots.add(new HotLink(name, x-w, 0, w, 30));
- left-=w;
- }
- }
-
- class HotLink extends Rectangle
- {
- String s;
- HotLink(String s, int x, int y, int w, int h)
- {
- super(x,y,w,h);
- this.s=s;
- }
- }
-
- public Dimension getPreferredSize()
- {
- return new Dimension(30,30);
- }
- }
-
+ public LinkTabPane()
+ {
+ setBackground(Color.white);
+ setLayout(new BorderLayout());
+ add(top, BorderLayout.NORTH);
+ add(center, BorderLayout.CENTER);
+ center.setLayout(cards);
+ top.addMouseListener(new MouseAdapter()
+ {
+
+ @Override
+ public void mousePressed(MouseEvent e)
+ {
+ String s = top.getName(e.getX());
+ if (s != null)
+ {
+ String old = currentName;
+ setCurrentName(s);
+ firePropertyChange("tab", old, s);
+ }
+ }
+ });
+ }
+
+ public String getTitleAt(int i)
+ {
+ return tabNames.get(i);
+ }
+
+ public void setSelectedIndex(int i)
+ {
+ setCurrentName(getTitleAt(i));
+ }
+
+ public void addTab(JComponent component, String name, boolean left)
+ {
+ tabNames.add(name);
+ tabMap.put(name, component);
+ center.add(component, name);
+ top.addName(name, left);
+ repaint();
+ if (currentName == null)
+ {
+ currentName = name;
+ }
+ }
+
+ public String getCurrentName()
+ {
+ return currentName;
+ }
+
+ public void setCurrentName(final String currentName)
+ {
+ this.currentName = currentName;
+ top.repaint();
+ SwingUtilities.invokeLater(new Runnable()
+ {
+ public void run()
+ {
+ cards.show(center, currentName);
+ }
+ });
+
+ }
+
+ class LinkTop extends JPanel
+ {
+ int left, right;
+ ArrayList<HotLink> leftHots = new ArrayList<HotLink>();
+ ArrayList<HotLink> rightHots = new ArrayList<HotLink>();
+ Font font = new Font("Verdana", Font.PLAIN, 14);
+ FontMetrics fm = getFontMetrics(font);
+
+ LinkTop()
+ {
+ setLayout(new FlowLayout(FlowLayout.LEFT));
+ setBackground(new Color(220, 220, 220));
+ }
+
+ public void paintComponent(Graphics g1)
+ {
+ int w = getSize().width, h = getSize().height;
+ Graphics2D g = (Graphics2D) g1;
+ g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ g.setColor(getBackground());
+ g.fillRect(0, 0, w, h);
+ g.setColor(Color.gray);
+ for (int i = 0; i < 2; i++)
+ {
+ g.drawLine(0, i, w, i);
+ g.drawLine(0, h - 1 - i, w, h - 1 - i);
+ }
+
+ for (HotLink hot : leftHots)
+ {
+ draw(g, hot, h, 0);
+ }
+
+ for (HotLink hot : rightHots)
+ {
+ draw(g, hot, h, w);
+ }
+
+ for (int i = 0; i < leftHots.size(); i++)
+ {
+
+ if (i < leftHots.size() - 1)
+ {
+ HotLink hot = leftHots.get(i);
+ for (int j = 0; j < 1; j++)
+ {
+ g.drawLine(hot.x + hot.width - 1 - j, 7, hot.x + hot.width - 1 - j, h - 7);
+ }
+ }
+ }
+
+ for (int i = 0; i < rightHots.size(); i++)
+ {
+
+ if (i < rightHots.size() - 1)
+ {
+ HotLink hot = rightHots.get(i);
+ for (int j = 0; j < 1; j++)
+ {
+ g.drawLine(hot.x + w - 1 - j, 7, hot.x + w - 1 - j, h - 7);
+ }
+ }
+ }
+ }
+
+ void draw(Graphics g, HotLink hot, int h, int dx)
+ {
+ int x = hot.x + dx;
+ if (hot.s.equals(currentName))
+ {
+ g.setColor(Color.lightGray);
+ g.fillRect(x, 2, hot.width, h - 4);
+ g.setColor(Color.gray);
+ g.drawLine(x - 1, 0, x - 1, h);
+ g.drawLine(x + hot.width - 1, 0, x + hot.width - 1, h);
+ }
+ g.setColor(Color.darkGray);
+ g.setFont(font);
+ int sw = fm.stringWidth(hot.s);
+ g.drawString(hot.s, x + (hot.width - sw) / 2, h - 10);
+
+ }
+
+ String getName(int x)
+ {
+ for (HotLink h : leftHots)
+ {
+ if (h.x <= x && h.x + h.width > x)
+ {
+ return h.s;
+ }
+ }
+ for (HotLink h : rightHots)
+ {
+ int w = getSize().width;
+ if (h.x + w <= x && h.x + h.width + w > x)
+ {
+ return h.s;
+ }
+ }
+
+ if (leftHots.size() > 0)
+ {
+ return leftHots.get(leftHots.size() - 1).s;
+ }
+ if (rightHots.size() > 0)
+ {
+ return rightHots.get(0).s;
+ }
+ return null;
+ }
+
+ void addName(String name, boolean leftward)
+ {
+ if (leftward)
+ {
+ int x = right;
+ int w = fm.stringWidth(name) + 24;
+ leftHots.add(new HotLink(name, x, 0, w, 30));
+ right += w;
+ } else
+ {
+ int x = left;
+ int w = fm.stringWidth(name) + 24;
+ rightHots.add(new HotLink(name, x - w, 0, w, 30));
+ left -= w;
+ }
+ }
+
+ class HotLink extends Rectangle
+ {
+ String s;
+
+ HotLink(String s, int x, int y, int w, int h)
+ {
+ super(x, y, w, h);
+ this.s = s;
+ }
+ }
+
+ public Dimension getPreferredSize()
+ {
+ return new Dimension(30, 30);
+ }
+ }
}
--
Gitblit v1.6.2