Пример #1
0
 private void checkHighlightVisible() {
   jp.repaint();
   if (highlight == null) return;
   if (!isVisible(highlight))
     v.getViewport()
         .setViewPosition(
             new Point(
                 0,
                 Math.max(
                     0,
                     Math.min(
                         jp.getHeight() - v.getViewport().getHeight(),
                         highlight.getPanel().getY() - 5))));
 }
Пример #2
0
 private void scrollView() {
   Point t = v.getViewport().getViewPosition();
   t.setLocation(
       t.x, Math.max(0, Math.min(jp.getHeight() - v.getViewport().getHeight(), t.y + speed)));
   v.getViewport().setViewPosition(t);
   DayLabel p;
   if (speed < 0) p = getFirstVisibleDay();
   else p = getLastVisibleDay();
   if (range && ref != null) {
     if (p.before(ref)) setSelection(p, ref);
     else setSelection(ref, p);
   }
   setHighlight(p);
 }
Пример #3
0
 private DayLabel getFirstVisibleDay() {
   Rectangle view = v.getViewport().getViewRect();
   for (int i = 0; i < 12; i++)
     for (int d = 1; d <= month[i].getDays(); d++)
       if (isVisible(month[i].getDay(d), view)) return month[i].getDay(d);
   return null;
 }
Пример #4
0
 private DayLabel getLastVisibleDay() {
   Rectangle view = v.getViewport().getViewRect();
   for (int i = 11; i >= 0; i--)
     for (int d = month[i].getDays(); d > 0; d--)
       if (isVisible(month[i].getDay(d), view)) return month[i].getDay(d);
   return null;
 }
Пример #5
0
  private void setPreferredPanelSize() {
    Dimension ps = v.getViewport().getMinimumSize();

    jp.setPreferredSize(
        new Dimension(
            columns * (ps.width - 5) + 5,
            ((jp.getComponentCount() - 1) / columns + 1) * (ps.height - 5) + 5));
  }
Пример #6
0
  private void ensureProperViewSize() {
    Dimension ps = v.getViewport().getMinimumSize();
    Dimension rs = v.getViewport().getSize();
    int nw = Math.min(4, Math.max(((rs.width - 5 + ps.width / 2) / (ps.width - 5)), 1));
    int nh = Math.min(5, Math.max(((rs.height - 5 + ps.height / 2) / (ps.height - 5)), 1));

    if (nh > (jp.getComponentCount() - 1) / nw + 1) nh = (jp.getComponentCount() - 1) / nw + 1;

    Dimension ns = new Dimension(nw * (ps.width - 5) + 5, nh * (ps.height - 5) + 5);
    if (ns.equals(rs)) return;

    columns = nw;
    setPreferredPanelSize();
    v.getViewport().setPreferredSize(ns);
    main.pack();
    v.getViewport().setViewPosition(new Point(0, jp.getPreferredSize().height));
    checkHighlightVisible();
  }
Пример #7
0
 private void mouseDrag(MouseEvent e) {
   Rectangle view = v.getViewport().getViewRect();
   if (!view.contains(e.getPoint())) {
     if (!scroll) {
       scroll = true;
       scroller.restart();
     }
     if (e.getY() < view.y) speed = (e.getY() - view.y) / 2 - 1;
     else if (e.getY() > view.y + view.height) speed = (e.getY() - view.y - view.height) / 2 + 1;
     else speed = 0;
     return;
   }
   if (scroll) {
     scroll = false;
     scroller.stop();
   }
   if (!range) {
     mousePress(e);
   } else if (ref != null || highlight != null) {
     //      System.out.print("drag ");
     DayLabel p = null;
     Component c = findComponent(e.getPoint());
     if (c instanceof DayLabel) {
       p = (DayLabel) c;
       if (!p.isDate()) {
         if (p.getDay() == 0) p = p.getPanel().getDay(1);
         else p = p.getPanel().getDay(p.getLastDay());
       }
     }
     if (p != null) {
       if (ref == null) {
         if (highlight.equals(p)) return;
         ref = highlight;
       }
       if (p.before(ref)) setSelection(p, ref);
       else setSelection(ref, p);
       setHighlight(p);
     }
   }
 }
Пример #8
0
 private boolean isVisible(DayLabel d) {
   return isVisible(d, v.getViewport().getViewRect());
 }
Пример #9
0
  private void jbInit() throws Exception {
    int dw = Aut.getAut().getNumber(frmParam.getParam("sisfun", "datumHoriz"));
    int dh = Aut.getAut().getNumber(frmParam.getParam("sisfun", "datumVert"));
    br = new Rectangle();
    jp = new JPanel();
    month = new MonthPanel[12];
    setYear(-1);
    columns = Math.max(1, Math.min(4, dw));
    dh = Math.max(1, Math.min(4, dh));
    if (columns == 4 && dh == 4) dh = 3;

    jp.setPreferredSize(
        new Dimension(
            month[0].getPreferredSize().width + 10,
            (month[0].getPreferredSize().height + 5) * jp.getComponentCount() + 5));

    v =
        new JraScrollPane(
            JraScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JraScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    v.getViewport()
        .setMinimumSize(
            new Dimension(
                month[0].getPreferredSize().width + 10, month[0].getPreferredSize().height + 10));
    v.getViewport().setPreferredSize(v.getViewport().getMinimumSize());
    v.setViewportView(jp);

    Dimension ps = v.getViewport().getMinimumSize();
    Dimension ns = new Dimension(columns * (ps.width - 5) + 5, dh * (ps.height - 5) + 5);

    setPreferredPanelSize();
    v.getViewport().setPreferredSize(ns);

    v.addComponentListener(
        new ComponentAdapter() {
          public void componentResized(ComponentEvent e) {
            ensureProperViewSize();
          }
        });

    jp.addMouseListener(
        new MouseAdapter() {
          public void mouseClicked(MouseEvent e) {
            // System.out.println("mouseclick "+e);
            if ((e.getModifiers() & e.BUTTON1_MASK) != 0) mouseClick(e);
          }

          public void mousePressed(MouseEvent e) {
            // System.out.println("mousepress "+e);
            if ((e.getModifiers() & e.BUTTON1_MASK) != 0) mousePress(e);
            if (e.getModifiers() == e.BUTTON3_MASK) {
              if (scroll) {
                scroll = false;
                scroller.stop();
              }
              setSelection(null, null);
              jp.repaint();
            }
          }

          public void mouseReleased(MouseEvent e) {
            if ((e.getModifiers() & e.BUTTON1_MASK) != 0) {
              if (scroll) {
                scroll = false;
                scroller.stop();
              }
              if (first != null && last != null) setResultRange();
            }
          }
        });
    jp.addMouseMotionListener(
        new MouseMotionAdapter() {
          public void mouseDragged(MouseEvent e) {
            if ((e.getModifiers() & e.BUTTON1_MASK) != 0) mouseDrag(e);
          }
        });
    scroller =
        new javax.swing.Timer(
            30,
            new ActionListener() {
              public void actionPerformed(ActionEvent e) {
                if (scroll && speed != 0) scrollView();
              }
            });
  }