Added PropertyChangeSupport to TimelineDayDisplay and decoupled it from the GUI

Added log4j lib
This commit is contained in:
Jonathan Bernard 2009-12-23 16:14:18 -06:00
parent bff340e910
commit 5b19542355
2 changed files with 82 additions and 61 deletions

BIN
lib/log4j-1.2.15.jar Normal file

Binary file not shown.

View File

@ -2,7 +2,7 @@
* Author: Jonathan Bernard - jonathan.bernard@gemalto.com
*/
package jdbernard.timestamper.gui;
package com.jdbernard.timestamper.gui;
import com.jdbernard.timestamper.core.TimelineMarker;
import com.jdbernard.timestamper.core.Timeline;
@ -17,6 +17,8 @@ import java.awt.Rectangle;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Rectangle2D;
import java.beans.PropertyChangeSupport;
import java.beans.PropertyChangeListener;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@ -32,6 +34,31 @@ import javax.swing.event.ChangeListener;
public class TimelineDayDisplay extends JComponent implements MouseListener,
ChangeListener {
private ArrayList<MarkerDisplayEntry> markerEntries;
private ArrayList<TimeLegendEntry> timeLegendLocations;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
private PropertyChangeSupport pcs = new PropertyChangeSupport(this);
private Timeline timeline;
private TimelineMarker currentMarker;
private Point lastMousePress;
private Font markFont;// = getFont().deriveFont(Font.BOLD);
private Font notesFont;// = getFont();
private Color evenTrans = new Color(0.75f, 0.75f, 0.75f, 0.4f);
private Color evenOpaque = new Color(0.75f, 0.75f, 0.75f, 1f);
private Color oddTrans = new Color(0.5f, 0.5f, 0.5f, 0.4f);
private Color oddOpaque = new Color(0.5f, 0.5f, 0.5f, 1f);
private Color selectedTrans = new Color(0.5f, 0.75f, 0.5f, 0.4f);
private Color selectedOpaque = new Color(0.5f, 0.75f, 0.5f, 1f);
private Color fontColor = new Color(0.1f, 0.1f, 0.1f, 1f);
private Date rangeStartDate = new Date();
private Date rangeEndDate = new Date();
private class MarkerDisplayEntry {
public TimelineMarker marker;
public float relY;
@ -186,47 +213,37 @@ public class TimelineDayDisplay extends JComponent implements MouseListener,
public abstract String formatCalendar(Calendar c); { }
}
private ArrayList<MarkerDisplayEntry> markerEntries;
private ArrayList<TimeLegendEntry> timeLegendLocations;
private TimelineMarker currentMarker;
private ArrayList<ChangeListener> changeListeners = new ArrayList<ChangeListener>();
private Point lastMousePress;
private Font markFont;// = getFont().deriveFont(Font.BOLD);
private Font notesFont;// = getFont();
private Color evenTrans = new Color(0.75f, 0.75f, 0.75f, 0.4f);
private Color evenOpaque = new Color(0.75f, 0.75f, 0.75f, 1f);
private Color oddTrans = new Color(0.5f, 0.5f, 0.5f, 0.4f);
private Color oddOpaque = new Color(0.5f, 0.5f, 0.5f, 1f);
private Color selectedTrans = new Color(0.5f, 0.75f, 0.5f, 0.4f);
private Color selectedOpaque = new Color(0.5f, 0.75f, 0.5f, 1f);
private Color fontColor = new Color(0.1f, 0.1f, 0.1f, 1f);
private Date rangeStartDate = new Date();
private Date rangeEndDate = new Date();
public TimelineDayDisplay() {
public TimelineDayDisplay(Timeline t) {
super();
setDay(new Date(), false);
this.timeline = t;
addMouseListener(this);
}
public TimelineDayDisplay(Calendar day) {
public TimelineDayDisplay(Timeline t, Calendar day) {
setDay(day.getTime(), false);
addMouseListener(this);
this.timeline = t;
updateMarkers(getGraphics());
}
public void addPropertyChangeListener(PropertyChangeListener l) {
pcs.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
pcs.removePropertyChangeListener(l);
}
/**
* Set the range for the visible timeline segment.
* @param start The beginning of the desired timeline segment.
* @param end The end of the desired timeline segment.
*/
public void setDisplayInterval(Date start, Date end) {
rangeStartDate = start;
rangeEndDate = end;
pcs.firePropertyChange("rangeStart", rangeStartDate, rangeStartDate = start);
pcs.firePropertyChange("rangeEnd", rangeEndDate, rangeEndDate = end);
}
/**
@ -256,42 +273,57 @@ public class TimelineDayDisplay extends JComponent implements MouseListener,
day.set(Calendar.HOUR_OF_DAY, 0);
day.set(Calendar.MINUTE, 0);
day.set(Calendar.SECOND, 0);
rangeStartDate = day.getTime();
pcs.firePropertyChange("rangeStart", rangeStartDate, rangeStartDate = day.getTime());
day.add(Calendar.DAY_OF_YEAR, 1);
rangeEndDate = day.getTime();
pcs.firePropertyChange("rangeEnd", rangeEndDate, rangeEndDate = day.getTime());
if (update) updateMarkers(getGraphics());
}
public void setMarkFont(Font f) {
markFont = f;
/**
* Get the starting point for the display range.
* @return The starting {@link java.util.Date} for the display range.
*/
public Date getRangeStart() { return rangeStartDate; }
/**
* Get the ending point for the display range.
* @return The ending {@link java.util.Date} for the display range.
*/
public Date getRangeEnd() { return rangeEndDate; }
/**
* Set the font used for displaying the name of the entry (more precisely:
* {@link com.jdbernard.timestamper.core.TimelineMarker#mark}).
* @param f The font to use.
*/
public void setMarkFont(Font f) {
pcs.firePropertyChange("markFont", markFont, markFont = f);
}
public Font getMarkFont() {
return markFont;
public Font getMarkFont() { return markFont; }
public void setNotesFont(Font f) {
pcs.firePropertyChange("notesFont", notesFont, notesFont = f);
}
public void setNotesFont(Font f) {
notesFont = f;
public Font getNotesFont() { return notesFont; }
public void setFontColor(Color f) {
pcs.firePropertyChange("fontColor", fontColor,
fontColor = new Color(f.getRGB()));
}
public Font getNotesFont() {
return notesFont;
}
public Color getFontColor() { return fontColor; }
public void setFontColor(Color f) {
fontColor = new Color(f.getRGB());
}
public Color getFontColor() {
return fontColor;
}
public void setEvenColor(Color c) {
evenOpaque = new Color(c.getRGB());
evenTrans = new Color((float) c.getRed() / 255f,
(float) c.getGreen() / 255f,
(float) c.getBlue() / 255f, 0.4f);
pcs.firePropertyChange("evenColor", evenOpaque,
evenOpaque = new Color(c.getRGB()));
}
public Color getEvenColor() {
@ -303,6 +335,9 @@ public class TimelineDayDisplay extends JComponent implements MouseListener,
oddTrans = new Color((float) c.getRed() / 255f,
(float) c.getGreen() / 255f,
(float) c.getBlue() / 255f, 0.4f);
pcs.firePropertyChange("oddColor", oddOpaque,
oddOpaque = new Color(c.getRGB()));
}
public Color getOddColor() {
@ -314,6 +349,8 @@ public class TimelineDayDisplay extends JComponent implements MouseListener,
selectedTrans = new Color((float) c.getRed() / 255f,
(float) c.getGreen() / 255f,
(float) c.getBlue() / 255f, 0.4f);
pcs.firePropertyChange("selectedColor", selectedOpaque,
selectedOpaque = new Color(c.getRGB()));
}
public Color getSelectedColor() {
@ -324,20 +361,6 @@ public class TimelineDayDisplay extends JComponent implements MouseListener,
return currentMarker;
}
public void addMarker(Date timestamp, String mark, String notes) {
/*Timeline timeline = TimeStamperApp.getApplication()
.getTimelineProperties().getTimeline();
timeline.addMarker(timestamp, mark, notes);
updateMarkers(getGraphics());*/
}
public void deleteSelectedMarker() {
/*Timeline timeline = TimeStamperApp.getApplication()
.getTimelineProperties().getTimeline();
timeline.removeMarker(currentMarker);
updateMarkers(getGraphics());*/
}
public void updateSelectedMarker(String notes) {
currentMarker.setNotes(notes);
updateMarkers(getGraphics());
@ -352,8 +375,6 @@ public class TimelineDayDisplay extends JComponent implements MouseListener,
*/
private void updateMarkers(Graphics g) {
/*Timeline timeline = TimeStamperApp.getApplication()
.getTimelineProperties().getTimeline();
Insets insets = this.getInsets();
Rectangle bounds = this.getBounds();
Rectangle canvasBounds = new Rectangle(insets.left, insets.top,
@ -470,7 +491,7 @@ public class TimelineDayDisplay extends JComponent implements MouseListener,
markerEntries.add(markerEntry);
}
repaint();*/
repaint();
}
@Override