[Lilith-devel] SF.net SVN: lilith:[311] trunk/lilith/src/main/java/de/huxhorn/lilith/swing
Brought to you by:
huxhorn
|
From: <hu...@us...> - 2009-08-26 00:31:04
|
Revision: 311
http://lilith.svn.sourceforge.net/lilith/?rev=311&view=rev
Author: huxhorn
Date: 2009-08-26 00:30:44 +0000 (Wed, 26 Aug 2009)
Log Message:
-----------
Work in progress on ticket #59.
Modified Paths:
--------------
trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ApplicationPreferences.java
trunk/lilith/src/main/java/de/huxhorn/lilith/swing/EventWrapperViewPanel.java
trunk/lilith/src/main/java/de/huxhorn/lilith/swing/MainFrame.java
trunk/lilith/src/main/java/de/huxhorn/lilith/swing/TabbedPaneViewContainer.java
trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ViewActions.java
trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ViewContainer.java
Modified: trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ApplicationPreferences.java
===================================================================
--- trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ApplicationPreferences.java 2009-08-12 21:50:33 UTC (rev 310)
+++ trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ApplicationPreferences.java 2009-08-26 00:30:44 UTC (rev 311)
@@ -96,6 +96,7 @@
public static final String CHECKING_FOR_UPDATE_PROPERTY = "checkingForUpdate";
public static final String SOURCE_FILTERING_PROPERTY = "sourceFiltering";
public static final String SOUND_LOCATIONS_PROPERTY = "soundLocations";
+ public static final String SCALE_FACTOR_PROPERTY = "scaleFactor";
public static final String MUTE_PROPERTY = "mute";
public static final String USING_INTERNAL_FRAMES_PROPERTY = "usingInternalFrames";
public static final String SCROLLING_TO_BOTTOM_PROPERTY = "scrollingToBottom";
@@ -1352,6 +1353,19 @@
propertyChangeSupport.firePropertyChange(SOUND_PATH_PROPERTY, oldValue, newValue);
}
+ public void setScaleFactor(double scale)
+ {
+ Object oldValue = getScaleFactor();
+ PREFERENCES.putDouble(SCALE_FACTOR_PROPERTY, scale);
+ Object newValue = getScaleFactor();
+ propertyChangeSupport.firePropertyChange(SCALE_FACTOR_PROPERTY, oldValue, newValue);
+ }
+
+ public double getScaleFactor()
+ {
+ return PREFERENCES.getDouble(SCALE_FACTOR_PROPERTY, 1.0d);
+ }
+
public void setMute(boolean mute)
{
Object oldValue = isMute();
Modified: trunk/lilith/src/main/java/de/huxhorn/lilith/swing/EventWrapperViewPanel.java
===================================================================
--- trunk/lilith/src/main/java/de/huxhorn/lilith/swing/EventWrapperViewPanel.java 2009-08-12 21:50:33 UTC (rev 310)
+++ trunk/lilith/src/main/java/de/huxhorn/lilith/swing/EventWrapperViewPanel.java 2009-08-26 00:30:44 UTC (rev 311)
@@ -53,10 +53,10 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xhtmlrenderer.simple.FSScrollPane;
-import org.xhtmlrenderer.simple.XHTMLPanel;
import org.xhtmlrenderer.simple.extend.XhtmlNamespaceHandler;
import org.xhtmlrenderer.swing.LinkListener;
import org.xhtmlrenderer.swing.SelectionHighlighter;
+import org.xhtmlrenderer.swing.ScalableXHTMLPanel;
import java.awt.*;
import java.awt.event.ActionEvent;
@@ -143,11 +143,12 @@
private static final Color ERROR_COLOR = new Color(0xffaaaa);
protected JMenu sendToMenuItem;
- private XHTMLPanel messagePane;
+ private ScalableXHTMLPanel messagePane;
private XhtmlNamespaceHandler xhtmlNamespaceHandler;
private EventWrapper<T> selectedEvent;
private SelectionHighlighter messagePaneCaret;
private SelectionHighlighter.CopyAction copyAction;
+ private double scale;
public EventWrapperViewPanel(MainFrame mainFrame, EventSource<T> eventSource)
@@ -179,7 +180,8 @@
JScrollPane tableScrollPane = new JScrollPane(table);
verticalLogScrollbar = tableScrollPane.getVerticalScrollBar();
- messagePane = new XHTMLPanel();
+ messagePane = new ScalableXHTMLPanel();
+ messagePane.setScale(mainFrame.getApplicationPreferences().getScaleFactor());
messagePaneCaret = new SelectionHighlighter();
messagePaneCaret.install(messagePane);
@@ -432,6 +434,12 @@
}
}
+ public void setScaleFactor(double scale)
+ {
+ this.scale=scale;
+ messagePane.setScale(scale);
+ }
+
public void updateView()
{
// update HTML detailsview
@@ -753,6 +761,7 @@
try
{
messagePane.setDocumentFromString(message, messageViewRootUrl.toExternalForm(), xhtmlNamespaceHandler);
+ messagePane.setScale(scale); // this fixes a bug
}
catch(Throwable t)
{
@@ -768,6 +777,7 @@
try
{
messagePane.setDocumentFromString(message, messageViewRootUrl.toExternalForm(), xhtmlNamespaceHandler);
+ messagePane.setScale(scale); // this fixes a bug
}
catch(Throwable t)
{
Modified: trunk/lilith/src/main/java/de/huxhorn/lilith/swing/MainFrame.java
===================================================================
--- trunk/lilith/src/main/java/de/huxhorn/lilith/swing/MainFrame.java 2009-08-12 21:50:33 UTC (rev 310)
+++ trunk/lilith/src/main/java/de/huxhorn/lilith/swing/MainFrame.java 2009-08-26 00:30:44 UTC (rev 311)
@@ -2477,9 +2477,15 @@
if (ApplicationPreferences.SHOWING_STACKTRACE_PROPERTY.equals(propName))
{
updateLoggingViews();
- //return;
+ return;
}
+ if (ApplicationPreferences.SCALE_FACTOR_PROPERTY.equals(propName))
+ {
+ updateViewScale(applicationPreferences.getScaleFactor());
+ return;
+ }
+
if (ApplicationPreferences.COLORING_WHOLE_ROW_PROPERTY.equals(propName))
{
coloringWholeRow = applicationPreferences.isColoringWholeRow();
@@ -2537,6 +2543,26 @@
updateAllViews();
}
+ private void updateViewScale(double scale)
+ {
+ {
+ Map<EventSource<LoggingEvent>, ViewContainer<LoggingEvent>> loggingViews = loggingEventViewManager.getViews();
+ for (Map.Entry<EventSource<LoggingEvent>, ViewContainer<LoggingEvent>> current : loggingViews.entrySet())
+ {
+ ViewContainer<LoggingEvent> value = current.getValue();
+ value.updateViewScale(scale);
+ }
+ }
+ {
+ Map<EventSource<AccessEvent>, ViewContainer<AccessEvent>> accessViews = accessEventViewManager.getViews();
+ for (Map.Entry<EventSource<AccessEvent>, ViewContainer<AccessEvent>> current : accessViews.entrySet())
+ {
+ ViewContainer<AccessEvent> value = current.getValue();
+ value.updateViewScale(scale);
+ }
+ }
+ }
+
private void updateLoggingViews()
{
Map<EventSource<LoggingEvent>, ViewContainer<LoggingEvent>> loggingViews = loggingEventViewManager.getViews();
Modified: trunk/lilith/src/main/java/de/huxhorn/lilith/swing/TabbedPaneViewContainer.java
===================================================================
--- trunk/lilith/src/main/java/de/huxhorn/lilith/swing/TabbedPaneViewContainer.java 2009-08-12 21:50:33 UTC (rev 310)
+++ trunk/lilith/src/main/java/de/huxhorn/lilith/swing/TabbedPaneViewContainer.java 2009-08-26 00:30:44 UTC (rev 311)
@@ -149,6 +149,15 @@
}
}
+ public void updateViewScale(double scale)
+ {
+ for(int i = 0; i < pane.getTabCount(); i++)
+ {
+ EventWrapperViewPanel<T> current = (EventWrapperViewPanel<T>) pane.getComponentAt(i);
+ current.setScaleFactor(scale);
+ }
+ }
+
/**
* @param view
*/
Modified: trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ViewActions.java
===================================================================
--- trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ViewActions.java 2009-08-12 21:50:33 UTC (rev 310)
+++ trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ViewActions.java 2009-08-26 00:30:44 UTC (rev 311)
@@ -468,6 +468,10 @@
private ResetLayoutAction resetLayoutAction;
private EditConditionMenuAction editConditionMenuAction;
+ private ZoomInMenuAction zoomInMenuAction;
+ private ZoomOutMenuAction zoomOutMenuAction;
+ private ResetZoomMenuAction resetZoomMenuAction;
+
private NextTabAction nextTabAction;
private PreviousTabAction previousTabAction;
private CloseFilterAction closeFilterAction;
@@ -612,6 +616,10 @@
resetLayoutAction = new ResetLayoutAction();
editConditionMenuAction = new EditConditionMenuAction();
+ zoomInMenuAction = new ZoomInMenuAction();
+ zoomOutMenuAction = new ZoomOutMenuAction();
+ resetZoomMenuAction = new ResetZoomMenuAction();
+
previousTabAction = new PreviousTabAction();
nextTabAction = new NextTabAction();
closeFilterAction = new CloseFilterAction();
@@ -744,6 +752,10 @@
viewMenu.add(editSourceNameMenuAction);
viewMenu.add(editConditionMenuAction);
viewMenu.addSeparator();
+ viewMenu.add(zoomInMenuAction);
+ viewMenu.add(zoomOutMenuAction);
+ viewMenu.add(resetZoomMenuAction);
+ viewMenu.addSeparator();
JMenu layoutMenu = new JMenu("Layout");
columnsMenu = new JMenu("Columns");
layoutMenu.add(columnsMenu);
@@ -880,7 +892,7 @@
editSourceNameMenuAction.setEnabled(hasView);
saveLayoutAction.setEnabled(hasView);
resetLayoutAction.setEnabled(hasView);
- editConditionMenuAction.setEnabled(hasView);
+ //editConditionMenuAction.setEnabled(hasView);
pauseMenuAction.setEnabled(hasView);
clearMenuAction.setEnabled(hasView && !hasFilteredBuffer);
attachMenuAction.setEnabled(hasView);
@@ -900,6 +912,10 @@
scrollToBottomMenuAction.updateAction();
editSourceNameMenuAction.updateAction();
editConditionMenuAction.updateAction();
+ zoomInMenuAction.updateAction();
+ zoomOutMenuAction.updateAction();
+ resetZoomMenuAction.updateAction();
+
pauseMenuAction.updateAction();
attachMenuAction.updateAction();
closeFilterAction.updateAction();
@@ -1595,6 +1611,121 @@
}
}
+ private static final double SCALE_FACTOR = 0.1d;
+
+ private class ZoomInMenuAction
+ extends AbstractAction
+ {
+ private static final long serialVersionUID = -8380709624103338783L;
+
+ public ZoomInMenuAction()
+ {
+ super("Zoom in");
+ KeyStroke accelerator = KeyStrokes.resolveAcceleratorKeyStroke(KeyStrokes.COMMAND_ALIAS + " shift PLUS");
+ if(logger.isDebugEnabled()) logger.debug("accelerator: {}", accelerator);
+ putValue(Action.ACCELERATOR_KEY, accelerator);
+ putValue(Action.SMALL_ICON, EMPTY_16_ICON);
+ putValue(Action.SHORT_DESCRIPTION, "Zoom in on the details view.");
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ ApplicationPreferences prefs = mainFrame.getApplicationPreferences();
+
+ double scale = prefs.getScaleFactor() + SCALE_FACTOR;
+ prefs.setScaleFactor(scale);
+ }
+
+ public void updateAction()
+ {
+ boolean enable = false;
+ if(viewContainer != null)
+ {
+ EventWrapperViewPanel eventWrapperViewPanel = viewContainer.getSelectedView();
+ if(eventWrapperViewPanel != null)
+ {
+ enable=true;
+ }
+ }
+ setEnabled(enable);
+ }
+ }
+
+ private class ZoomOutMenuAction
+ extends AbstractAction
+ {
+ private static final long serialVersionUID = -8380709624103338783L;
+
+ public ZoomOutMenuAction()
+ {
+ super("Zoom out");
+ KeyStroke accelerator = KeyStrokes.resolveAcceleratorKeyStroke(KeyStrokes.COMMAND_ALIAS + " shift MINUS");
+ if(logger.isDebugEnabled()) logger.debug("accelerator: {}", accelerator);
+ putValue(Action.ACCELERATOR_KEY, accelerator);
+ putValue(Action.SMALL_ICON, EMPTY_16_ICON);
+ putValue(Action.SHORT_DESCRIPTION, "Zoom out on the details view.");
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ ApplicationPreferences prefs = mainFrame.getApplicationPreferences();
+
+ double scale = prefs.getScaleFactor() - SCALE_FACTOR;
+ prefs.setScaleFactor(scale);
+ }
+
+ public void updateAction()
+ {
+ boolean enable = false;
+ if(viewContainer != null)
+ {
+ EventWrapperViewPanel eventWrapperViewPanel = viewContainer.getSelectedView();
+ if(eventWrapperViewPanel != null)
+ {
+ enable=true;
+ }
+ }
+ setEnabled(enable);
+ }
+ }
+
+ private class ResetZoomMenuAction
+ extends AbstractAction
+ {
+ private static final long serialVersionUID = -8380709624103338783L;
+
+ public ResetZoomMenuAction()
+ {
+ super("Reset Zoom");
+ //KeyStroke accelerator = KeyStrokes.resolveAcceleratorKeyStroke(KeyStrokes.COMMAND_ALIAS + " +");
+ //if(logger.isDebugEnabled()) logger.debug("accelerator: {}", accelerator);
+ //putValue(Action.ACCELERATOR_KEY, accelerator);
+ putValue(Action.SMALL_ICON, EMPTY_16_ICON);
+ putValue(Action.SHORT_DESCRIPTION, "Reset Zoom of the details view.");
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ ApplicationPreferences prefs = mainFrame.getApplicationPreferences();
+
+ prefs.setScaleFactor(1.0d);
+ }
+
+ public void updateAction()
+ {
+ boolean enable = false;
+ if(viewContainer != null)
+ {
+ EventWrapperViewPanel eventWrapperViewPanel = viewContainer.getSelectedView();
+ if(eventWrapperViewPanel != null)
+ {
+ enable=true;
+ }
+ }
+ setEnabled(enable);
+ }
+ }
+
private class EditConditionMenuAction
extends AbstractAction
{
Modified: trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ViewContainer.java
===================================================================
--- trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ViewContainer.java 2009-08-12 21:50:33 UTC (rev 310)
+++ trunk/lilith/src/main/java/de/huxhorn/lilith/swing/ViewContainer.java 2009-08-26 00:30:44 UTC (rev 311)
@@ -364,6 +364,8 @@
}
}
+ public abstract void updateViewScale(double scale);
+
class FilterTaskListener
implements TaskListener<Long>
{
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|