/*
* MouseHandlerMultiply.java
*
* Created on 3 ���� 2006 �., 13:49
*
*/
package datechooser.controller;
import datechooser.model.DateChoose;
import datechooser.model.multiple.MultyDateChooseModel;
import datechooser.model.multiple.MultySelectModes;
import java.awt.event.*;
import javax.swing.*;
/**
* Handles input events (from mouse and keyboard).
* Supports multiple selection.<br>
* ����������� ������� ����� (���������� � ����).
* ������������ ����������� �������������� ������.
* @author Androsov Vadim
* @since 1.0
*/
public class EventHandlerMultiply extends EventHandler {
private void setSelectionModes(int modifiers) {
if (isDragging()) {
if (!isMask(modifiers, MouseEvent.SHIFT_DOWN_MASK)) {
if (!isDragStarted()) {
setDragStarted(true);
getModel().setMode(MultySelectModes.SINGLE,
isMask(modifiers, MouseEvent.CTRL_DOWN_MASK));
getModel().setPeriodSelectionStarted(false);
} else {
getModel().setMode(MultySelectModes.PERIOD, true);
// getModel().setPeriodSelectionStarted(false);
}
}
} else
if (isMask(modifiers, MouseEvent.SHIFT_DOWN_MASK) &&
isMask(modifiers, MouseEvent.CTRL_DOWN_MASK)) {
getModel().setMode(MultySelectModes.PERIOD, true);
getModel().setPeriodSelectionStarted(true);
} else
if (isMask(modifiers, MouseEvent.SHIFT_DOWN_MASK)) {
getModel().setMode(MultySelectModes.PERIOD, false);
getModel().setPeriodSelectionStarted(true);
} else
if (isMask(modifiers, MouseEvent.CTRL_DOWN_MASK)) {
getModel().setMode(MultySelectModes.SINGLE, true);
getModel().setPeriodSelectionStarted(false);
} else {
getModel().setMode(MultySelectModes.SINGLE, false);
getModel().setPeriodSelectionStarted(false);
}
}
protected void doSelect(MouseEvent e) {
setSelectionModes(e.getModifiersEx());
super.doSelect(e);
}
protected void doShift(KeyEvent e) {
setSelectionModes(e.getModifiersEx());
super.doShift(e);
}
public MultyDateChooseModel getModel() {
return (MultyDateChooseModel)getView().getModel();
}
}