package org.yamcs.ui.archivebrowser;
import org.yamcs.ui.archivebrowser.IndexBox.IndexLineSpec;
import org.yamcs.utils.TimeEncoding;
import javax.swing.*;
import javax.swing.event.MouseInputListener;
import java.awt.*;
import java.awt.event.MouseEvent;
/**
* Represents a horizontal TM line composed of a label and a timeline
*/
class IndexLine extends JPanel implements MouseInputListener {
private final IndexBox indexBox;
private static final long serialVersionUID = 1L;
IndexLineSpec pkt;
IndexLine(IndexBox tmBox, IndexLineSpec pkt) {
super(null, false);
this.indexBox = tmBox;
this.pkt = pkt;
pkt.assocIndexLine = this;
setAlignmentX(Component.LEFT_ALIGNMENT);
setBorder(BorderFactory.createEmptyBorder());
addMouseListener(this);
addMouseMotionListener(this);
}
@Override
public Point getToolTipLocation(MouseEvent e) {
return indexBox.getToolTipLocation(e);
}
private MouseEvent translateEvent(MouseEvent e) {
// workaround for this bug
//http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7181403
MouseEvent me=SwingUtilities.convertMouseEvent(e.getComponent(), e, indexBox);
return new MouseEvent(me.getComponent(), me.getID(), me.getWhen(), me.getModifiers(), me.getX(), me.getY(), me.getXOnScreen(), me.getYOnScreen(), me.getClickCount(), me.isPopupTrigger(), e.getButton());
}
@Override
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) {
indexBox.selectedPacket = pkt;
indexBox.showPopup(translateEvent(e));
}
///tmBox.dataView.doMousePressed(translateEvent(e));
/*
Action postTip = getActionMap().get("postTip");
debugLog("tmpanel postTip src "+e.getSource()+" this "+this+" actionmap "+getActionMap().size()+" inputmap "+getInputMap(0).size());
if (postTip != null) {
debugLog("tmpanel postTip");
postTip.actionPerformed(new ActionEvent(e.getSource(), ActionEvent.ACTION_PERFORMED, ""));
}
*/
}
@Override
public void mouseReleased(MouseEvent e) {
// Cross-platform popups
if (e.isPopupTrigger()) {
indexBox.selectedPacket = pkt;
indexBox.showPopup(translateEvent(e));
}
indexBox.doMouseReleased(translateEvent(e));
}
@Override
public void mouseEntered(MouseEvent e) {
indexBox.dispatchEvent(translateEvent(e));
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void mouseClicked(MouseEvent e) {}
@Override
public void mouseMoved(MouseEvent e) {
MouseEvent transEvent = translateEvent(e);
setToolTipText(TimeEncoding.toCombinedFormat(indexBox.dataView.getMouseInstant(transEvent)));
indexBox.dataView.setPointer(transEvent);
}
@Override
public void mouseDragged(MouseEvent e) {}
}