« JBoss の server.log | トップページ | 1年前のカルテが出なくなった »

2009年2月18日 (水)

カレンダー表示

Calendar
  • 文字をセンタリングした
  • 矢印アイコンを小さくした
  • ポップアップカレンダーが尻切れになる場合があるのを修正
  • ポップアップカレンダーのデフォルト表示月を最終受診日のある月にした
  • ポップアップカレンダーのボタン制御がされてなかったのを修正

client/PatientInspector.java の編集

private void initComponents() {
 ・
 ・
  basicInfoInspector.getPanel().setPreferredSize(new Dimension(prefW2, 40));
  basicInfoInspector.getPanel().setMaximumSize(new Dimension(prefW2, 40));
  basicInfoInspector.getPanel().setMinimumSize(new Dimension(prefW2, 40));
  //memoInspector.getPanel().setPreferredSize(new Dimension(prefW, 70));
  allergyInspector.getPanel().setPreferredSize(new Dimension(prefW, 100));
  ////docHistory.getPanel().setPreferredSize(new Dimension(prefW, 280));
  physicalInspector.getPanel().setPreferredSize(new Dimension(prefW, 110));
  //int prefH = patientVisitInspector.getPanel().getPreferredSize().height;
  //patientVisitInspector.getPanel().setPreferredSize(new Dimension(prefW, prefH));
////↓   サイズ微調整
  docHistory.getPanel().setPreferredSize(new Dimension(prefW, 350));
  patientVisitInspector.getPanel().setPreferredSize(new Dimension(prefW, 180));
  patientVisitInspector.getPanel().setMinimumSize(new Dimension(prefW, 180));
  patientVisitInspector.getPanel().setMaximumSize(new Dimension(prefW, 180));
  memoInspector.getPanel().setPreferredSize(new Dimension(prefW, 70));
  memoInspector.getPanel().setPreferredSize(new Dimension(prefW, 70));
////↑

client/CalendarCardPanel.java の編集

////↓
private JPanel cmdPanel;
private JPanel dummyPanel;
public CalendarCardPanel(HashMap colorTable) {
  this(colorTable, 0);
}

//public CalendarCardPanel(HashMap colorTable) {
public CalendarCardPanel(HashMap colorTable, int month) {
  current = month;
////↑
  this.colorTable = colorTable;
  calendarListener = new CalendarListener(this);
 ・
 ・
  cardPanel.setLayout(cardLayout);
  cardPanel.add(lc, name);
////↓
  //backBtn.setMargin(new Insets(2,2,2,2));
  //stopBtn.setMargin(new Insets(2,2,2,2));
  //forwardBtn.setMargin(new Insets(2,2,2,2));
  backBtn.setPreferredSize(new Dimension(15,15));
  stopBtn.setPreferredSize(new Dimension(15,15));
  forwardBtn.setPreferredSize(new Dimension(15,15));
  backBtn.setBorderPainted(false);
  stopBtn.setBorderPainted(false);
  forwardBtn.setBorderPainted(false);
  backBtn.setContentAreaFilled(false);
  stopBtn.setContentAreaFilled(false);
  forwardBtn.setContentAreaFilled(false);
////↑
 ・
 ・
  //JPanel cmdPanel = createCommnadPanel();
////↓
  cmdPanel = createCommnadPanel();
  cmdPanel.setBackground(ClientContext.getColor("color.calendar.title.back"));
  cmdPanel.setOpaque(true);
  dummyPanel = new JPanel();
  dummyPanel.setPreferredSize(cmdPanel.getPreferredSize());
  dummyPanel.setBackground(ClientContext.getColor("color.calendar.title.back"));
  dummyPanel.setOpaque(true);
  lc.getTitlePanel().add(cmdPanel, BorderLayout.EAST);
  lc.getTitlePanel().add(dummyPanel, BorderLayout.WEST);
  //cardPanel.setPreferredSize(new Dimension(193,153)); //h=45+18×n

  this.setLayout(new BorderLayout(0,0));
  //this.add(cmdPanel, BorderLayout.WEST);
  this.add(cardPanel, BorderLayout.CENTER);
  //this.add(cmdPanel, BorderLayout.NORTH);
  //this.add(cmdPanel, BorderLayout.EAST);
////↑
  controlNavigation();
 ・
 ・
public void setCalendarRange(int[] range) {
  this.range = range;
////追加
  controlNavigation();
}
 ・
 ・
private void controlNavigation() {
  if (range != null) {
////変更
    if (current == range[0]) {
      backBtn.setEnabled(false);
      forwardBtn.setEnabled(true);
      //if (backBtn.isEnabled()) {
      //    backBtn.setEnabled(false);
      //}
      } else if (current == range[1]) {
        backBtn.setEnabled(true);
        forwardBtn.setEnabled(false);
        //if (forwardBtn.isEnabled()) {
        //    forwardBtn.setEnabled(false);
        //}
      } else {
        backBtn.setEnabled(true);
        forwardBtn.setEnabled(true);
        //if (! backBtn.isEnabled()) {
        //    backBtn.setEnabled(true);
        //}
        //if (! forwardBtn.isEnabled()) {
        //    forwardBtn.setEnabled(true);
        //}
 ・
 ・
  private void showCalendar() {
 ・
 ・
    lc.getTableModel().setMarkDates(markList);
        }
////↓
    lc.getTitlePanel().add(cmdPanel, BorderLayout.EAST);
    lc.getTitlePanel().add(dummyPanel, BorderLayout.WEST);
    // popup メニューに表示されているときは,カレンダーの大きさに合わせて大きさを変える
    int n = lc.getTableModel().getRowCount();
    cardPanel.setPreferredSize(new Dimension(193,18*n+45));
    Container con = this.getParent();
    if (con instanceof JPopupMenu) ((JPopupMenu) con).pack();
////↑
    cardLayout.show(cardPanel, key);
  }

////↓   復活
  private JPanel createCommnadPanel() {
    JPanel cmd = new JPanel(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER,0,0));
    cmd.add(backBtn);
    cmd.add(stopBtn);
    cmd.add(forwardBtn);
    return cmd;
  }

client/LiteCalendarPanel.java の編集

////↓
private JPanel titlePanel = new JPanel();
public JPanel getTitlePanel() {
  return titlePanel;
}
////↑
public LiteCalendarPanel(int n, boolean addTitle) {
 ・
 ・
  // Replace DefaultRender
  DateRenderer dateRenderer = new DateRenderer();
////↓ dateRenderer.setHorizontalAlignment(SwingConstants.RIGHT);
  dateRenderer.setHorizontalAlignment(SwingConstants.CENTER);
  table.setShowHorizontalLines(true);
  table.setShowVerticalLines(false);
  table.setGridColor(new Color(250,250,250));
  table.setRowSelectionAllowed(false);
  //header
  table.getTableHeader().setDefaultRenderer(new CalendarHeaderRenderer());
  table.getTableHeader().setResizingAllowed(false);
  table.getTableHeader().setReorderingAllowed(false);
////↑
 ・
 ・
  // レイアウトする
  this.setLayout(new BorderLayout(0,0));
  if (addTitle) {
////↓
  titlePanel.setBackground(titleBack);
  titlePanel.setLayout(new BorderLayout(0,0));
  titlePanel.add(titleLabel, BorderLayout.CENTER);

  this.add(titlePanel, BorderLayout.NORTH);
  //this.add(getTitleLabel(), BorderLayout.NORTH);
////↑
}
 ・
 ・
protected class DateRenderer extends DefaultTableCellRenderer {
 ・
 ・
  public DateRenderer() {
    super();
    this.setOpaque(true);
////  this.setHorizontalAlignment(SwingConstants.RIGHT);
    this.setHorizontalAlignment(SwingConstants.CENTER);
 ・

client/CalendarHeaderRenderer.java の作成

package open.dolphin.client;

import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.table.DefaultTableCellRenderer;

public class CalendarHeaderRenderer extends DefaultTableCellRenderer {

    private Border border;

    public CalendarHeaderRenderer() {
        this.setHorizontalAlignment(SwingConstants.CENTER);
        border = UIManager.getBorder("TableHeader.cellBorder");
    }
    @Override
    public Component getTableCellRendererComponent(JTable t, Object v, boolean isSelected, boolean hasFocus, int row, int col) {
        super.getTableCellRendererComponent(t, v, isSelected, hasFocus, row, col);

        setBorder(border);

        switch (col) {
            case 0:
                setForeground(Color.red);
                break;
            case 6:
                setForeground(Color.blue);
                break;
            default:
                setForeground(Color.black);
        }
        return this;
    }
}

plugin/CaremapDocument/…/SimpleCalendarPanel.java の編集

public final class SimpleCalendarPanel extends JPanel implements DragGestureListener, DropTargetListener, DragSourceListener {
 ・
 ・
//// private int horizontalAlignment = SwingConstants.RIGHT;
  private int horizontalAlignment = SwingConstants.CENTER;
private JTable createCalendarTable(GregorianCalendar gc) {
 ・
 ・
  tbl.setDefaultRenderer(java.lang.Object.class, dateRenderer);
////↓
  tbl.getTableHeader().setDefaultRenderer(new CalendarHeaderRenderer());
////↑

« JBoss の server.log | トップページ | 1年前のカルテが出なくなった »

OpenDolphin」カテゴリの記事