From 7ac1b01c591ed65743676b1181d60eb17c5cb69d Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Wed, 21 Aug 2019 18:58:52 -0400
Subject: [PATCH] U dir and average.
---
timeflow/views/ListView.java | 499 ++++++++++++++++++++++++++++--------------------------
1 files changed, 259 insertions(+), 240 deletions(-)
diff --git a/timeflow/views/ListView.java b/timeflow/views/ListView.java
index ec87f1c..37fbe11 100755
--- a/timeflow/views/ListView.java
+++ b/timeflow/views/ListView.java
@@ -20,247 +20,266 @@
import java.net.URL;
import java.util.*;
-public class ListView extends AbstractView {
+public class ListView extends AbstractView
+{
+ private JEditorPane listDisplay;
+ private JComboBox sortMenu = new JComboBox();
+ private ActComparator sort;//=ActComparator.byTime();
+ private int maxPerPage = 50;
+ private int pageStart = 0;
+ private int lastSize = 0;
+ private ActList acts;
+ private Field sortField;
+ private JLabel pageLabel = new JLabel("Page", JLabel.LEFT);
+ private JComboBox pageMenu = new JComboBox();
+ private boolean changing = false;
+ private JPanel controls;
- private JEditorPane listDisplay;
- private JComboBox sortMenu=new JComboBox();
- private ActComparator sort;//=ActComparator.byTime();
- private int maxPerPage=50;
- private int pageStart=0;
- private int lastSize=0;
- private ActList acts;
- private Field sortField;
-
- private JLabel pageLabel=new JLabel("Page", JLabel.LEFT);
- private JComboBox pageMenu=new JComboBox();
- private boolean changing=false;
-
- private JPanel controls;
-
- public ListView(TFModel model)
- {
- super(model);
-
- listDisplay=HtmlDisplay.create();
- listDisplay.addHyperlinkListener(new LinkIt());
- JScrollPane scrollPane = new JScrollPane(listDisplay);
- setLayout(new BorderLayout());
- add(scrollPane, BorderLayout.CENTER);
-
-
- controls=new JPanel();
- controls.setLayout(null);
- controls.setBackground(Color.white);
-
- int x=10, y=10;
- int ch=25, pad=5, cw=160;
- JLabel sortLabel=new JLabel("Sort Order", JLabel.LEFT);
- controls.add(sortLabel);
- sortLabel.setBounds(x,y,cw,ch);
- y+=ch+pad;
-
- controls.add(sortMenu);
- sortMenu.setBounds(x,y,cw,ch);
- y+=ch+3*pad;
-
- controls.add(pageLabel);
- pageLabel.setBounds(x,y,cw,ch);
- y+=ch+pad;
- controls.add(pageMenu);
- pageMenu.setBounds(x,y,cw,ch);
-
- showPageMenu(false);
- pageMenu.addActionListener(pageListener);
- sortMenu.addActionListener(sortListener);
- }
-
- protected JComponent _getControls()
- {
- return controls;
- }
-
- ActionListener sortListener=new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (changing || sortMenu.getItemCount()<=0) // this means the action was fired after all items removed.
- return;
- sortField=getModel().getDB().getField((String)sortMenu.getSelectedItem());
- sort=sortField==null ? null : ActComparator.by(sortField);
- setToFirstPage();
- makeList();
- }};
-
- ActionListener pageListener=new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- if (changing)
- return;
- pageStart=maxPerPage*pageMenu.getSelectedIndex();
- System.out.println(e.getActionCommand());
- makeList();
- }};
-
- @Override
- protected void onscreen(boolean majorChange)
- {
- _note(null);
- }
-
- public void _note(TFEvent e) {
- changing=true;
- if (e==null || e.affectsSchema() || e.affectsRowSet())
- {
- sortMenu.removeActionListener(sortListener);
- sortMenu.removeAllItems();
- pageStart=0;
- java.util.List<Field> fields=getModel().getDB().getFields();
- Field firstField=null;
- if (fields.size()>0)
- firstField=fields.get(0);
- for (Field f: fields)
- {
- sortMenu.addItem(f.getName());
- }
- sortField=getModel().getDB().getField(VirtualField.START);
- if (sortField!=null)
- sortMenu.setSelectedItem(sortField.getName());
- else
- sortField=firstField;
- sortMenu.addActionListener(sortListener);
- sort=null;
- }
- if (e!=null && e.affectsData())
- {
- setToFirstPage();
- }
- changing=false;
- makeList();
- }
-
- private void setToFirstPage()
- {
- pageStart=0;
- if (pageMenu.isVisible())
- {
- pageMenu.removeActionListener(pageListener);
- pageMenu.setSelectedIndex(0);
- pageMenu.addActionListener(pageListener);
- }
- }
-
- void showPageMenu(boolean visible)
- {
- pageLabel.setVisible(visible);
- pageMenu.setVisible(visible);
- if (visible)
- {
- pageMenu.removeActionListener(pageListener);
- pageMenu.setSelectedIndex(pageStart/maxPerPage);
- pageMenu.addActionListener(pageListener);
- }
- }
-
-
- void makeList()
- {
- HtmlFormat html=new HtmlFormat();
- html.setModel(getModel());
- StringBuffer page=new StringBuffer();
-
- page.append(html.makeHeader());
-
-
- ActList as=getModel().getActs();
- if (as==null || as.size()==0 && getModel().getDB().size()==0)
- {
- page.append("<tr><td><h1><font color=#003399>Empty Database</font></h1></td></tr>");
- showPageMenu(false);
- }
- else
- {
-
- if (sort==null)
- {
- Field timeField=getModel().getDB().getField(VirtualField.START);
- if (timeField!=null)
- sort=ActComparator.by(timeField);
- }
+ public ListView(TimeflowModel model)
+ {
+ super(model);
- acts=as.copy();
- if (sort!=null)
- Collections.sort(acts, sort);
-
- boolean pages=acts.size()>maxPerPage;
- int last=Math.min(acts.size(), pageStart+maxPerPage);
- if (pages)
- {
- int n=acts.size();
- if (lastSize!=n)
- {
- pageMenu.removeActionListener(pageListener);
- pageMenu.removeAllItems();
- for (int i=0; i*maxPerPage<n;i++)
- {
- pageMenu.addItem("Items "+((i*maxPerPage)+1)+" to "+
- Math.min(n, (i+1)*maxPerPage));
- }
- pageMenu.addActionListener(pageListener);
- lastSize=n;
- }
- }
- showPageMenu(pages);
-
- page.append("<tr><td><h1><font color=#003399>"+(pages? (pageStart+1)+"-"+(last) +" of ": "")+acts.size()+" Events</font></h1>");
- page.append("<br><br></td></tr>");
+ listDisplay = HtmlDisplay.create();
+ listDisplay.addHyperlinkListener(new LinkIt());
+ JScrollPane scrollPane = new JScrollPane(listDisplay);
+ setLayout(new BorderLayout());
+ add(scrollPane, BorderLayout.CENTER);
- for (int i=pageStart; i<last; i++)
- {
- Act a=acts.get(i);
- page.append(html.makeItem(a,i));
- }
- }
- page.append(html.makeFooter());
- listDisplay.setText(page.toString());
- listDisplay.setCaretPosition(0);
- repaint();
- }
-
-
-
-
- @Override
- public String getName() {
- return "List";
- }
-
- static class ArrayRenderer extends DefaultTableCellRenderer {
- public void setValue(Object value) {
- setText(Display.arrayToString((Object[])value));
- }
- }
-
- public class LinkIt implements HyperlinkListener
- {
- public void hyperlinkUpdate(HyperlinkEvent e)
- {
- if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED)
- return;
-
- String s=e.getDescription();
- System.out.println(s);
- if (s.length()>0)
- {
- char c=s.charAt(0);
- if (c=='e') // code for "edit"
- {
- int i=Integer.parseInt(s.substring(1));
- EditRecordPanel.edit(getModel(), acts.get(i));
- return;
- }
-
- }
- Display.launchBrowser(e.getURL().toString());
-
- }
- }
+
+ controls = new JPanel();
+ controls.setLayout(null);
+ controls.setBackground(Color.white);
+
+ int x = 10, y = 10;
+ int ch = 25, pad = 5, cw = 160;
+ JLabel sortLabel = new JLabel("Sort Order", JLabel.LEFT);
+ controls.add(sortLabel);
+ sortLabel.setBounds(x, y, cw, ch);
+ y += ch + pad;
+
+ controls.add(sortMenu);
+ sortMenu.setBounds(x, y, cw, ch);
+ y += ch + 3 * pad;
+
+ controls.add(pageLabel);
+ pageLabel.setBounds(x, y, cw, ch);
+ y += ch + pad;
+ controls.add(pageMenu);
+ pageMenu.setBounds(x, y, cw, ch);
+
+ showPageMenu(false);
+ pageMenu.addActionListener(pageListener);
+ sortMenu.addActionListener(sortListener);
+ }
+
+ protected JComponent _getControls()
+ {
+ return controls;
+ }
+ ActionListener sortListener = new ActionListener()
+ {
+
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ if (changing || sortMenu.getItemCount() <= 0) // this means the action was fired after all items removed.
+ {
+ return;
+ }
+ sortField = getModel().getDB().getField((String) sortMenu.getSelectedItem());
+ sort = sortField == null ? null : ActComparator.by(sortField);
+ setToFirstPage();
+ makeList();
+ }
+ };
+ ActionListener pageListener = new ActionListener()
+ {
+
+ @Override
+ public void actionPerformed(ActionEvent e)
+ {
+ if (changing)
+ {
+ return;
+ }
+ pageStart = maxPerPage * pageMenu.getSelectedIndex();
+ System.out.println(e.getActionCommand());
+ makeList();
+ }
+ };
+
+ @Override
+ protected void onscreen(boolean majorChange)
+ {
+ _note(null);
+ }
+
+ public void _note(TFEvent e)
+ {
+ changing = true;
+ if (e == null || e.affectsSchema() || e.affectsRowSet())
+ {
+ sortMenu.removeActionListener(sortListener);
+ sortMenu.removeAllItems();
+ pageStart = 0;
+ java.util.List<Field> fields = getModel().getDB().getFields();
+ Field firstField = null;
+ if (fields.size() > 0)
+ {
+ firstField = fields.get(0);
+ }
+ for (Field f : fields)
+ {
+ sortMenu.addItem(f.getName());
+ }
+ sortField = getModel().getDB().getField(VirtualField.START);
+ if (sortField != null)
+ {
+ sortMenu.setSelectedItem(sortField.getName());
+ } else
+ {
+ sortField = firstField;
+ }
+ sortMenu.addActionListener(sortListener);
+ sort = null;
+ }
+ if (e != null && e.affectsData())
+ {
+ setToFirstPage();
+ }
+ changing = false;
+ makeList();
+ }
+
+ private void setToFirstPage()
+ {
+ pageStart = 0;
+ if (pageMenu.isVisible())
+ {
+ pageMenu.removeActionListener(pageListener);
+ pageMenu.setSelectedIndex(0);
+ pageMenu.addActionListener(pageListener);
+ }
+ }
+
+ void showPageMenu(boolean visible)
+ {
+ pageLabel.setVisible(visible);
+ pageMenu.setVisible(visible);
+ if (visible)
+ {
+ pageMenu.removeActionListener(pageListener);
+ pageMenu.setSelectedIndex(pageStart / maxPerPage);
+ pageMenu.addActionListener(pageListener);
+ }
+ }
+
+ void makeList()
+ {
+ HtmlFormat html = new HtmlFormat();
+ html.setModel(getModel());
+ StringBuffer page = new StringBuffer();
+
+ page.append(html.makeHeader());
+
+ ActList as = getModel().getActs();
+ if (as == null || as.size() == 0 && getModel().getDB().size() == 0)
+ {
+ page.append("<tr><td><h1><font color=#003399>Empty Database</font></h1></td></tr>");
+ showPageMenu(false);
+ } else
+ {
+
+ if (sort == null)
+ {
+ Field timeField = getModel().getDB().getField(VirtualField.START);
+ if (timeField != null)
+ {
+ sort = ActComparator.by(timeField);
+ }
+ }
+
+ acts = as.copy();
+ if (sort != null)
+ {
+ Collections.sort(acts, sort);
+ }
+
+ boolean pages = acts.size() > maxPerPage;
+ int last = Math.min(acts.size(), pageStart + maxPerPage);
+ if (pages)
+ {
+ int n = acts.size();
+ if (lastSize != n)
+ {
+ pageMenu.removeActionListener(pageListener);
+ pageMenu.removeAllItems();
+ for (int i = 0; i * maxPerPage < n; i++)
+ {
+ pageMenu.addItem("Items " + ((i * maxPerPage) + 1) + " to "
+ + Math.min(n, (i + 1) * maxPerPage));
+ }
+ pageMenu.addActionListener(pageListener);
+ lastSize = n;
+ }
+ }
+ showPageMenu(pages);
+
+ page.append("<tr><td><h1><font color=#003399>" + (pages ? (pageStart + 1) + "-" + (last) + " of " : "") + acts.size() + " Events</font></h1>");
+ page.append("<br><br></td></tr>");
+
+ for (int i = pageStart; i < last; i++)
+ {
+ Act a = acts.get(i);
+ page.append(html.makeItem(a, i));
+ }
+ }
+ page.append(html.makeFooter());
+ listDisplay.setText(page.toString());
+ listDisplay.setCaretPosition(0);
+ repaint();
+ }
+
+ @Override
+ public String getName()
+ {
+ return "List";
+ }
+
+ static class ArrayRenderer extends DefaultTableCellRenderer
+ {
+
+ public void setValue(Object value)
+ {
+ setText(Display.arrayToString((Object[]) value));
+ }
+ }
+
+ public class LinkIt implements HyperlinkListener
+ {
+
+ public void hyperlinkUpdate(HyperlinkEvent e)
+ {
+ if (e.getEventType() != HyperlinkEvent.EventType.ACTIVATED)
+ {
+ return;
+ }
+
+ String s = e.getDescription();
+ System.out.println(s);
+ if (s.length() > 0)
+ {
+ char c = s.charAt(0);
+ if (c == 'e') // code for "edit"
+ {
+ int i = Integer.parseInt(s.substring(1));
+ EditRecordPanel.edit(getModel(), acts.get(i));
+ return;
+ }
+
+ }
+ Display.launchBrowser(e.getURL().toString());
+
+ }
+ }
}
--
Gitblit v1.6.2