package org.geogebra.web.web.cas.view;
import org.geogebra.common.awt.GPoint;
import org.geogebra.web.html5.main.AppW;
import org.geogebra.web.web.gui.GuiManagerW;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.dom.client.MouseUpEvent;
import com.google.gwt.event.dom.client.MouseUpHandler;
import com.google.gwt.user.client.Window;
/**
* Handles mouse events in row headers
*/
public class RowHeaderHandler implements MouseUpHandler {
private AppW app;
private RowHeaderWidget rowHeader;
private CASTableW table;
/**
* @param appl
* app
* @param casTableW
* CAS table
* @param rowHeaderWidget
* row headers
*/
public RowHeaderHandler(AppW appl, CASTableW casTableW,
RowHeaderWidget rowHeaderWidget) {
super();
app = appl;
rowHeader = rowHeaderWidget;
table = casTableW;
}
@Override
public void onMouseUp(MouseUpEvent event) {
int releasedRow = rowHeader.getIndex();
table.getCASView().getCASStyleBar()
.setSelectedRow(table.getGeoCasCell(releasedRow));
if (event.getNativeEvent().getButton() == NativeEvent.BUTTON_RIGHT) {
if (!table.isSelectedIndex(releasedRow)) {
table.setSelectedRows(releasedRow, releasedRow);
}
if (table.getSelectedRows().length > 0) {
// Don't istantiate RowHeaderPopupMenuW() directly. Use
// guimanager for this,
// because it must store in GuiManagerW.currentPopup - in this
// way the popup will hide
// when a newer popup will be shown.
RowHeaderPopupMenuW popupMenu = ((GuiManagerW) app
.getGuiManager()).getCASContextMenu(table);
popupMenu.show(new GPoint(event.getClientX()
+ Window.getScrollLeft(), event.getClientY()
+ Window.getScrollTop()));
}
}
}
}