/* WorkspaceSignalPlot.java created 2007-12-15
*
*/
package org.signalml.app.config.workspace;
import java.awt.Dimension;
import java.awt.Point;
import java.awt.geom.Point2D;
import javax.swing.JViewport;
import org.signalml.app.view.signal.SignalColor;
import org.signalml.app.view.signal.SignalPlot;
import org.signalml.app.view.tag.TagPaintMode;
import org.signalml.domain.montage.Montage;
import com.thoughtworks.xstream.annotations.XStreamAlias;
/** WorkspaceSignalPlot
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
@XStreamAlias("workspacesignalplot")
public class WorkspaceSignalPlot {
private boolean antialiased;
private boolean clamped;
private boolean offscreenChannelsDrawn;
private boolean optimizeSignalDisplay;
private boolean tagToolTipsVisible;
private boolean pageLinesVisible;
private boolean blockLinesVisible;
private boolean channelLinesVisible;
private TagPaintMode tagPaintMode;
private SignalColor signalColor;
private boolean signalXOR;
private float timePosition;
private float valuePosition;
private boolean horizontalLock;
private boolean verticalLock;
private float horizontalTimeLead;
private float verticalValueLead;
private Montage localMontage;
private boolean compactColumnHeader;
protected WorkspaceSignalPlot() {
}
public WorkspaceSignalPlot(SignalPlot plot) {
antialiased = plot.isAntialiased();
clamped = plot.isClamped();
offscreenChannelsDrawn = plot.isOffscreenChannelsDrawn();
optimizeSignalDisplay = plot.isOptimizeSignalDisplaying();
tagToolTipsVisible = plot.isTagToolTipsVisible();
pageLinesVisible = plot.isPageLinesVisible();
blockLinesVisible = plot.isBlockLinesVisible();
channelLinesVisible = plot.isChannelLinesVisible();
tagPaintMode = plot.getTagPaintMode();
signalColor = plot.getSignalColor();
signalXOR = plot.isSignalXOR();
Point p = plot.getViewport().getViewPosition();
Point2D.Float p2 = plot.toSignalSpace(p);
timePosition = (float) p2.getX();
valuePosition = (float) p2.getY();
if (plot.getMasterPlot() != null) {
horizontalLock = plot.isHorizontalLock();
verticalLock = plot.isVerticalLock();
horizontalTimeLead = plot.getHorizontalTimeLead();
verticalValueLead = plot.getVerticalValueLead();
localMontage = plot.getLocalMontage();
} else {
horizontalLock = false;
verticalLock = false;
horizontalTimeLead = 0;
verticalValueLead = 0;
localMontage = null;
}
compactColumnHeader = plot.getSignalPlotColumnHeader().isCompact();
}
public void configurePlot(SignalPlot plot) {
SignalPlot masterPlot = plot.getMasterPlot();
if (masterPlot == null) {
plot.setAntialiased(antialiased);
plot.setClamped(clamped);
plot.setOffscreenChannelsDrawn(offscreenChannelsDrawn);
plot.setOptimizeSignalDisplaying(optimizeSignalDisplay);
plot.setTagToolTipsVisible(tagToolTipsVisible);
plot.setPageLinesVisible(pageLinesVisible);
plot.setBlockLinesVisible(blockLinesVisible);
plot.setChannelLinesVisible(channelLinesVisible);
plot.setTagPaintMode(tagPaintMode);
plot.setSignalColor(signalColor);
plot.setSignalXOR(signalXOR);
}
Point2D.Float p2 = new Point2D.Float(timePosition, valuePosition);
Point p = plot.toPixelSpace(p2);
JViewport viewport = plot.getViewport();
viewport.validate();
Dimension viewportSize = viewport.getExtentSize();
Dimension plotSize = plot.getSize();
plot.getSignalPlotColumnHeader().setCompact(compactColumnHeader);
if (masterPlot != null) {
plot.setLocalMontage(localMontage);
}
p.x = Math.max(0, Math.min(plotSize.width - viewportSize.width, p.x));
p.y = Math.max(0, Math.min(plotSize.height - viewportSize.height, p.y));
viewport.setViewPosition(p);
if (masterPlot != null) {
plot.setHorizontalTimeLead(horizontalTimeLead);
plot.setVerticalValueLead(verticalValueLead);
plot.setHorizontalLock(horizontalLock);
plot.setVerticalLock(verticalLock);
}
}
}