From a9e12f6c508810604c8c91ee15451776b08ce1a1 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Mon, 22 Apr 2019 07:41:56 -0400
Subject: [PATCH] Camera capslock fix

---
 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