« SaveDialog の改造 | トップページ | FileInspector の作成 »

2011年1月19日 (水)

DiagnosisInspector 作成

新しい iMac になったら,画面がものすごく広くなったため(20": 1680x1050→ 27": 2560x1440),カルテの左側エリアにかなり余裕ができた。そこで,診断名を表示する DiagnosisInspector.java を作った。 インスペクタを開くときに,診断をサーバから読み込んで表示する。サーバとの通信はそのときだけで,その後は DiagnosisDocument から情報を受け取って表示するしくみ。

Diagnosisinspector

Windolphin

Macintosh の画面 Windows XP の画面

 

client/DiagnosisInspector.java

client/DiagnosisDocument.java

public static final String MAIN_DIAGNOSIS = "主病名";
public static final String SUSPECTED_DIAGNOSIS = "疑い病名";
 :
// DiagnosisInspector
DiagnosisInspector diagnosisInspector;
 :
private void initialize() {
 :
  // PatientInspector に新しく作った DiagnosisInspector と連絡
  diagnosisInspector = ((ChartImpl) getContext()).getDiagnosisInspector();
}
 :
public void start() {
 :
  // DiagnosisInspector に自分を教える
  diagnosisInspector.setDiagnosisDocument(this);
 :
public void getDiagnosisHistory(Date past) {
 :
    // 最後に有効期限(disUseDate)が99999999以外に設定されていたら移行病名としてセット
    for (Object rd : list) checkIkouByomei((RegisteredDiagnosisModel) rd);

    // 新しく作った DiagnosisInspector を update
    diagnosisInspector.update();
  }
 :
class DiagnosisPutTask extends DBTask> {
 :
  protected void succeeded(List list) {
 :
    // DiagnosisInspector に連絡
    diagnosisInspector.update();
  }

client/ChartImpl.java

/**
 * 病名インスペクタを返す
 */
public DiagnosisInspector getDiagnosisInspector() {
  return inspector.getDiagnosisInspector();
}

project/ProjectStub.java

public String getFifthInspector() {
  return prefs.get("fifthInspector", PatientInspector.INSPECTOR_ITEMS[5]); // 病名
}
public void setFifthInspector(String fifthInspector) {
   prefs.put("fifthInspector", fifthInspector);
}

client/PatientInspector.java

private boolean bDiagnosis;
private boolean bFile;
public static String[] INSPECTOR_ITEMS = new String[]{
  "メモ", "カレンダー", "文書履歴", "アレルギー", "身長体重", "病名", "関連文書", "なし"
};
// 病名インスペクタ
private DiagnosisInspector diagnosisInspector;
public DiagnosisInspector getDiagnosisInspector() {
  return diagnosisInspector;
}
// 関連文書インスペクタ → ついでに作った
private FileInspector fileInspector;
public FileInspector getFileInspector() {
  return fileInspector;
}
 :
private void initComponents() {
  String diagnosisTitle = "病名";
  String fileTitle = "関連文書";
  String fifthInspector = Project.getPreferences().get("fifthInspector", INSPECTOR_ITEMS[5]); //"病名"
  diagnosisInspector = new DiagnosisInspector(context);
  fileInspector = new FileInspector(context);
  diagnosisInspector.getPanel().setPreferredSize(new Dimension(prefW, 100));
  fileInspector.getPanel().setPreferredSize(new Dimension(prefW, 100));
 :
  layoutRow(container, fifthInspector);
  if (!bDiagnosis) {
    tabbedPane.addTab(diagnosisTitle, diagnosisInspector.getPanel());
  }
  if (!bFile) {
    tabbedPane.addTab(fileTitle, fileInspector.getPanel());
  }
 :
private void layoutRow(JPanel content, String itype) {
 :
  else if (itype.equals(INSPECTOR_ITEMS[5])) { // "病名"
    diagnosisInspector.getPanel().setBorder(BorderFactory.createTitledBorder("病名"));
    content.add(diagnosisInspector.getPanel());
    bDiagnosis = true;

  } else if (itype.equals(INSPECTOR_ITEMS[6])) { // "関連文書"
    fileInspector.getPanel().setBorder(BorderFactory.createTitledBorder("関連文書"));
    content.add(fileInspector.getPanel());
    bFile = true;
  }

client/KarteSettingPanel.java

private static int INSPECTOR_LENGTH = 5;
 :
initComponents() {
 :
  label = new JLabel("4番目:", SwingConstants.RIGHT);
  gbb.add(label, 0, row, 1, 1, GridBagConstraints.EAST);
  gbb.add(inspectorCompo[row], 1, row, 1, 1, GridBagConstraints.WEST);
  row++;
  label = new JLabel("ボトム:", SwingConstants.RIGHT);
  gbb.add(label, 0, row, 1, 1, GridBagConstraints.EAST);
  gbb.add(inspectorCompo[row], 1, row, 1, 1, GridBagConstraints.WEST);
  row++;
 :
private void bindModelToView() {
  inspectorCompo[4].setSelectedItem(model.getFifthInspector());
 :
private void bindViewToModel() {
  model.setFifthInspector((String) inspectorCompo[4].getSelectedItem());
 :
class KarteModel {
  private String fifthInspector;
 :
  public void populate(ProjectStub stub) {
    setFifthInspector(stub.getFifthInspector());
 :
  public void restore(ProjectStub stub) {
     stub.setFifthInspector(getFifthInspector());
 :
  public String getFifthInspector() {
    return fifthInspector;
  }
  public void setFifthInspector(String fifthInspector) {
    this.fifthInspector = fifthInspector;
  }

« SaveDialog の改造 | トップページ | FileInspector の作成 »

OpenDolphin」カテゴリの記事