From c1af17fab4c8cd519f54f572851fc93e7ee8f84a Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Sat, 21 Jul 2018 13:13:35 -0400
Subject: [PATCH] timeline mouse over

---
 timeflow/app/TimeflowApp.java           |    8 
 timeflow/views/SummaryView.java         |  325 +++++++++++++++++++++++++++--------------------------
 timeflow/vis/Mouseover.java             |   17 +-
 timeflow/vis/timeline/AxisRenderer.java |    1 
 4 files changed, 177 insertions(+), 174 deletions(-)

diff --git a/timeflow/app/TimeflowApp.java b/timeflow/app/TimeflowApp.java
index 1bdc790..c579393 100755
--- a/timeflow/app/TimeflowApp.java
+++ b/timeflow/app/TimeflowApp.java
@@ -137,18 +137,18 @@
                 AbstractView[] views =
                 {
                         timeline,
-                        new CalendarView(model),
+                        //new CalendarView(model),
                         new ListView(model),
                         new TableView(model),
                         new BarGraphView(model),
-                        intro,
-                        new DescriptionView(model),
+                        //intro,
                         new SummaryView(model),
+                        new DescriptionView(model),
                 };
 
                 for (int i = 0; i < views.length; i++)
                 {
-                        center.addTab(views[i], views[i].getName(), i < 5);
+                        center.addTab(views[i], views[i].getName(), true); // i < 5);
                         displayPanel.addLocalControl(views[i].getName(), views[i].getControls());
                 }
 
diff --git a/timeflow/views/SummaryView.java b/timeflow/views/SummaryView.java
index b51b638..ba198d6 100755
--- a/timeflow/views/SummaryView.java
+++ b/timeflow/views/SummaryView.java
@@ -13,169 +13,172 @@
 
 import javax.swing.*;
 
+public class SummaryView extends AbstractView
+{
 
-public class SummaryView extends AbstractView {
-	
-	private JEditorPane analysisDisplay;
-	private FieldAnalysis[] fieldAnalyzers=new FieldAnalysis[]
-    {
-			new MissingValueAnalysis(), new RangeDateAnalysis(), 
-			new RangeNumberAnalysis(), new FrequencyAnalysis()
-    };
-	private int numItems;
-	private int numFiltered;
-	private Interval range;
-	private JComponent controls;
-	
-	public SummaryView(TFModel model)
-	{
-		super(model);
-		analysisDisplay=HtmlDisplay.create();
-		JScrollPane scrollPane = new JScrollPane(analysisDisplay);
-		setLayout(new GridLayout(1,1));
-		add(scrollPane);
-		
-		controls=new HtmlControls("This report gives a <br> statistical breakdown<br> "+
-				"of your data. <p> Reading the summary often helps<br> you find "+
-				"data errors.");
-	}
-	
-	@Override
-	public JComponent _getControls()
-	{
-		return controls;
-	}
-	
-	void makeHtml()
-	{
-		Display d=getModel().getDisplay();
-		ActDB db=getModel().getDB();
-		ActList acts=getModel().getActs();
-		StringBuffer page=new StringBuffer();
-		page.append("<blockquote>");
-		if (getModel().getDB()==null)
-		{
-			page.append("<h1><font color=#003399>No data loaded.</font></h1>");
-		}
-		else
-		{
-			page.append("<BR><BR><BR>File: "+getModel().getDbFile()+"<br>");
-			page.append("Source: "+getModel().getDB().getSource()+"<br><br>");
-			page.append("Description: "+getModel().getDB().getDescription()+"<br><br>");
-			page.append("<br><br>");
-			page.append("<table border=0>");
-			
-			
-			page.append("<tr><td valign=top align=left width=100><b>");
-			page.append("<font size=+1>Data</font><br>");
-			
-			page.append("</td><td align=top>");
-			append(page, "Total events", ""+numItems);
-			
-			if (numItems>0)
-			{
-				append(page, "Total selected", ""+numFiltered);
-				if (numFiltered>0)
-				{
-					append(page, "Earliest",  new Date(range.start).toString());
-					append(page, "Latest",  new Date(range.end).toString());
-				}
-			}
-			page.append("<br></td></tr>");
-			
-			page.append("<tr><td valign=top align=left width=100><b>");
-			page.append("<font size=+1>Fields</font><br>");
-			
-			page.append("</td><td align=top>");
-			for (Field f: getModel().getDB().getFields())
-			{
-					append(page, f.getName(),FieldFormatCatalog.humanName(f.getType())+fieldLabel(f));
-			}
-			page.append("<br></td></tr>");
-			
-				
-			page.append("</table>");
+        private JEditorPane analysisDisplay;
+        private FieldAnalysis[] fieldAnalyzers = new FieldAnalysis[]
+        {
+                new MissingValueAnalysis(), new RangeDateAnalysis(),
+                new RangeNumberAnalysis(), new FrequencyAnalysis()
+        };
+        private int numItems;
+        private int numFiltered;
+        private Interval range;
+        private JComponent controls;
 
-			if (numFiltered>0)
-			{
-				page.append("<h1>Statistics (for "+acts.size()+" items)</h1>");
-				for (Field field: db.getFields())
-				{
-					page.append("<h2>"+field.getName()+"</h2>");
-					page.append("<ul>");
-					for (int i=0; i<fieldAnalyzers.length; i++)
-					{
-						FieldAnalysis fa=fieldAnalyzers[i];
-						if (fa.canHandleType(field.getType()))
-						{
-							page.append("<li>");
-							page.append("<b><font color=#808080>"+fa.getName()+"</font></b><br>");
-							fa.perform(acts, field);
-							String[] s=fa.getResultDescription();
-							for (int j=0; j<s.length; j++)
-							{
-								page.append(s[j]);
-								page.append("<br>");
-							}
-							page.append("</li>");
-						}
-					}
-					page.append("</ul>");
-				}
-			}
-		}
-		page.append("</blockquote>");
-		analysisDisplay.setText(page.toString());
-		analysisDisplay.setCaretPosition(0);
-	}
-	
-	static void append(StringBuffer page, String label, String value)
-	{
-		page.append("<b><font color=#808080>"+label+"</font></b>&nbsp;&nbsp;&nbsp;&nbsp;");
-		page.append(value);
-		page.append("<br>");
-	}
-	
-	@Override
-	protected void onscreen(boolean majorChange)
-	{
-		_note(null);
-	}
+        public SummaryView(TFModel model)
+        {
+                super(model);
+                analysisDisplay = HtmlDisplay.create();
+                JScrollPane scrollPane = new JScrollPane(analysisDisplay);
+                setLayout(new GridLayout(1, 1));
+                add(scrollPane);
 
-	protected void _note(TFEvent e) {
-		recalculate();
-		makeHtml();
-		repaint();
-	}
-	
-	String fieldLabel(Field f)
-	{
-		StringBuffer b=new StringBuffer("<b>");
-		ActDB db=getModel().getDB();
-		for (String v: VirtualField.list())
-		{
-			if (db.getField(v)!=null && db.getField(v).getName().equals(f.getName()))
-				b.append(" (Shown in visualization as "+VirtualField.humanName(v)+")");
-		}
-		b.append("</b>");
-		return b.toString();
-	}
-	
-	void recalculate()
-	{
-		ActList acts=getModel().getActs();
-		if (acts==null)
-		{
-			numItems=0;
-			return;
-		}
-		numFiltered=acts.size();
-		numItems=getModel().getDB().size();
-		range=DBUtils.range(acts, VirtualField.START);
-	}
+                controls = new HtmlControls("This report gives a <br> statistical breakdown<br> "
+                        + "of your data. <p> Reading the summary often helps<br> you find "
+                        + "data errors.");
+        }
 
-	@Override
-	public String getName() {
-		return "Summary";
-	}
+        @Override
+        public JComponent _getControls()
+        {
+                return controls;
+        }
+
+        void makeHtml()
+        {
+                Display d = getModel().getDisplay();
+                ActDB db = getModel().getDB();
+                ActList acts = getModel().getActs();
+                StringBuffer page = new StringBuffer();
+                page.append("<blockquote>");
+                if (getModel().getDB() == null)
+                {
+                        page.append("<h1><font color=#003399>No data loaded.</font></h1>");
+                } else
+                {
+                        page.append("<BR><BR><BR>File: " + getModel().getDbFile() + "<br>");
+                        page.append("Source: " + getModel().getDB().getSource() + "<br><br>");
+                        page.append("Description: " + getModel().getDB().getDescription() + "<br><br>");
+                        page.append("<br><br>");
+                        page.append("<table border=0>");
+
+
+                        page.append("<tr><td valign=top align=left width=100><b>");
+                        page.append("<font size=+1>Data</font><br>");
+
+                        page.append("</td><td align=top>");
+                        append(page, "Total events", "" + numItems);
+
+                        if (numItems > 0)
+                        {
+                                append(page, "Total selected", "" + numFiltered);
+                                if (numFiltered > 0)
+                                {
+                                        append(page, "Earliest", new Date(range.start).toString());
+                                        append(page, "Latest", new Date(range.end).toString());
+                                }
+                        }
+                        page.append("<br></td></tr>");
+
+                        page.append("<tr><td valign=top align=left width=100><b>");
+                        page.append("<font size=+1>Fields</font><br>");
+
+                        page.append("</td><td align=top>");
+                        for (Field f : getModel().getDB().getFields())
+                        {
+                                append(page, f.getName(), FieldFormatCatalog.humanName(f.getType()) + fieldLabel(f));
+                        }
+                        page.append("<br></td></tr>");
+
+
+                        page.append("</table>");
+
+                        if (numFiltered > 0)
+                        {
+                                page.append("<h1>Statistics (for " + acts.size() + " items)</h1>");
+                                for (Field field : db.getFields())
+                                {
+                                        page.append("<h2>" + field.getName() + "</h2>");
+                                        page.append("<ul>");
+                                        for (int i = 0; i < fieldAnalyzers.length; i++)
+                                        {
+                                                FieldAnalysis fa = fieldAnalyzers[i];
+                                                if (fa.canHandleType(field.getType()))
+                                                {
+                                                        page.append("<li>");
+                                                        page.append("<b><font color=#808080>" + fa.getName() + "</font></b><br>");
+                                                        fa.perform(acts, field);
+                                                        String[] s = fa.getResultDescription();
+                                                        for (int j = 0; j < s.length; j++)
+                                                        {
+                                                                page.append(s[j]);
+                                                                page.append("<br>");
+                                                        }
+                                                        page.append("</li>");
+                                                }
+                                        }
+                                        page.append("</ul>");
+                                }
+                        }
+                }
+                page.append("</blockquote>");
+                analysisDisplay.setText(page.toString());
+                analysisDisplay.setCaretPosition(0);
+        }
+
+        static void append(StringBuffer page, String label, String value)
+        {
+                page.append("<b><font color=#808080>" + label + "</font></b>&nbsp;&nbsp;&nbsp;&nbsp;");
+                page.append(value);
+                page.append("<br>");
+        }
+
+        @Override
+        protected void onscreen(boolean majorChange)
+        {
+                _note(null);
+        }
+
+        protected void _note(TFEvent e)
+        {
+                recalculate();
+                makeHtml();
+                repaint();
+        }
+
+        String fieldLabel(Field f)
+        {
+                StringBuffer b = new StringBuffer("<b>");
+                ActDB db = getModel().getDB();
+                for (String v : VirtualField.list())
+                {
+                        if (db.getField(v) != null && db.getField(v).getName().equals(f.getName()))
+                        {
+                                b.append(" (Shown in visualization as " + VirtualField.humanName(v) + ")");
+                        }
+                }
+                b.append("</b>");
+                return b.toString();
+        }
+
+        void recalculate()
+        {
+                ActList acts = getModel().getActs();
+                if (acts == null)
+                {
+                        numItems = 0;
+                        return;
+                }
+                numFiltered = acts.size();
+                numItems = getModel().getDB().size();
+                range = DBUtils.range(acts, VirtualField.START);
+        }
+
+        @Override
+        public String getName()
+        {
+                return "Summary";
+        }
 }
diff --git a/timeflow/vis/Mouseover.java b/timeflow/vis/Mouseover.java
index eb2b74b..7f58071 100755
--- a/timeflow/vis/Mouseover.java
+++ b/timeflow/vis/Mouseover.java
@@ -45,21 +45,22 @@
                 }
 
 
-                boxW = Math.min(350, boxW);
-                int boxH = 18 * numLines + 10;
-                int mx = this.x + this.width + 5;
-                int my = this.y + this.height + 35;
+                //boxW = Math.min(350, boxW);
+                int boxH = 18 * numLines; // + 10;
+                int mx = this.x + this.width; // + 5;
+                int my = this.y + this.height; // + 35;
 
                 // put box in a place where it does not obscure the data
                 // or go off screen.
-                if (my + boxH > maxH - 10)
+                if (my + boxH > maxH) // - 10)
                 {
-                        my = Math.max(10, this.y - boxH - 5);
+//                        my = Math.max(10, this.y - boxH - 5);
                 }
-                if (mx + boxW > maxW - 10)
+                if (mx + boxW > maxW) // - 10)
                 {
-                        mx = Math.max(10, this.x - boxW - 10);
+//                        mx = Math.max(10, this.x - boxW - 10);
                 }
+                
                 int ty = my;
                 g.setColor(new Color(0, 0, 0, 70));
                 g.fillRoundRect(mx - 11, my - 16, boxW, boxH, 12, 12);
diff --git a/timeflow/vis/timeline/AxisRenderer.java b/timeflow/vis/timeline/AxisRenderer.java
index 0372be6..9e69341 100755
--- a/timeflow/vis/timeline/AxisRenderer.java
+++ b/timeflow/vis/timeline/AxisRenderer.java
@@ -46,7 +46,6 @@
                 int n = t.tics.size();
                 for (int i = 0; i < n - 1; i++)
                 {
-
                         long start = t.tics.get(i);
                         long end = t.tics.get(i + 1);
 

--
Gitblit v1.6.2