예제 #1
0
  /** インポートしているスタンプを削除する。 */
  public void removeImportedTree() {

    // 削除するTreeを取得する
    int row = browseTable.getSelectedRow();
    final PublishedTreeModel removeTree = tableModel.getObject(row);

    if (removeTree == null) {
      return;
    }

    SubscribedTreeModel sm = new SubscribedTreeModel();
    sm.setTreeId(removeTree.getId());
    sm.setUserModel(Project.getUserModel());
    final List<SubscribedTreeModel> list = new ArrayList<SubscribedTreeModel>(1);
    list.add(sm);

    // Unsubscribeタスクを実行する

    final SimpleWorker worker =
        new SimpleWorker<Void, Void>() {

          @Override
          protected Void doInBackground() throws Exception {
            StampDelegater sdl = new StampDelegater();
            sdl.unsubscribeTrees(list);
            return null;
          }

          @Override
          protected void succeeded(Void result) {
            // スタンプボックスから削除する
            stampBox.removeImportedTree(removeTree.getId());
            // ブラウザ表示を変更する
            removeTree.setImported(false);
            tableModel.fireTableDataChanged();
          }

          @Override
          protected void cancelled() {
            ClientContext.getBootLogger().debug("Task cancelled");
          }

          @Override
          protected void failed(java.lang.Throwable cause) {
            JOptionPane.showMessageDialog(
                frame,
                cause.getMessage(),
                ClientContext.getFrameTitle(title),
                JOptionPane.WARNING_MESSAGE);
            ClientContext.getBootLogger().warn(cause.getMessage());
          }

          @Override
          protected void startProgress() {
            delayCount = 0;
            blockGlass.block();
            taskTimer.start();
          }

          @Override
          protected void stopProgress() {
            taskTimer.stop();
            monitor.close();
            blockGlass.unblock();
            taskTimer = null;
            monitor = null;
          }
        };

    String message = "スタンプインポート";
    String note = "インポート済みスタンプを削除しています...";
    Component c = frame;
    monitor = new ProgressMonitor(c, message, note, 0, maxEstimation / delay);

    taskTimer =
        new Timer(
            delay,
            new ActionListener() {

              @Override
              public void actionPerformed(ActionEvent e) {
                delayCount++;

                if (monitor.isCanceled() && (!worker.isCancelled())) {
                  // worker.cancel(true);
                  // No cancel

                } else if (delayCount >= monitor.getMaximum() && (!worker.isCancelled())) {
                  worker.cancel(true);

                } else {
                  monitor.setProgress(delayCount);
                }
              }
            });

    worker.execute();
  }
예제 #2
0
  /** ブラウザテーブルで選択した公開Treeをインポートする。 */
  public void importPublishedTree() {

    // テーブルはシングルセレクションである
    int row = browseTable.getSelectedRow();
    final PublishedTreeModel importTree = tableModel.getObject(row);

    if (importTree == null) {
      return;
    }

    // Import 済みの場合
    if (importTree.isImported()) {
      return;
    }

    try {
      importTree.setTreeXml(new String(importTree.getTreeBytes(), "UTF-8"));
    } catch (Exception e) {
      e.printStackTrace(System.err);
    }

    // サブスクライブリストに追加する
    SubscribedTreeModel sm = new SubscribedTreeModel();
    sm.setUserModel(Project.getUserModel());
    sm.setTreeId(importTree.getId());
    final List<SubscribedTreeModel> subscribeList = new ArrayList<SubscribedTreeModel>(1);
    subscribeList.add(sm);

    final SimpleWorker worker =
        new SimpleWorker<Void, Void>() {

          @Override
          protected Void doInBackground() throws Exception {
            StampDelegater sdl = new StampDelegater();
            sdl.subscribeTrees(subscribeList);
            return null;
          }

          @Override
          protected void succeeded(Void result) {
            // スタンプボックスへインポートする
            stampBox.importPublishedTree(importTree);
            // Browser表示をインポート済みにする
            importTree.setImported(true);
            tableModel.fireTableDataChanged();
          }

          @Override
          protected void cancelled() {
            ClientContext.getBootLogger().debug("Task cancelled");
          }

          @Override
          protected void failed(java.lang.Throwable cause) {
            JOptionPane.showMessageDialog(
                frame,
                cause.getMessage(),
                ClientContext.getFrameTitle(title),
                JOptionPane.WARNING_MESSAGE);
            ClientContext.getBootLogger().warn(cause.getMessage());
          }

          @Override
          protected void startProgress() {
            delayCount = 0;
            blockGlass.block();
            taskTimer.start();
          }

          @Override
          protected void stopProgress() {
            taskTimer.stop();
            monitor.close();
            blockGlass.unblock();
            taskTimer = null;
            monitor = null;
          }
        };

    String message = "スタンプインポート";
    String note = "インポートしています...";
    Component c = frame;
    monitor = new ProgressMonitor(c, message, note, 0, maxEstimation / delay);

    taskTimer =
        new Timer(
            delay,
            new ActionListener() {

              @Override
              public void actionPerformed(ActionEvent e) {
                delayCount++;

                if (monitor.isCanceled() && (!worker.isCancelled())) {
                  // worker.cancel(true);
                  // No cancel

                } else if (delayCount >= monitor.getMaximum() && (!worker.isCancelled())) {
                  worker.cancel(true);

                } else {
                  monitor.setProgress(delayCount);
                }
              }
            });

    worker.execute();
  }