public boolean showEventMessage(final List<CalendarEventData> calendarEventList) {

        if (SwingUtilities.isEventDispatchThread()) {

            // メッセージ作成
            Message message = createCalendarEventDataMessage(calendarEventList);

            // tooltipに表示
            trayIcon.setToolTip(message.getString());

            // dialog表示準備
            int ret = 0;
            String dialogMessage = createCalendarEventDataMessageForDialog(message.getString());
            String title = getNotificationTitleString();
            int option = JOptionPane.YES_NO_OPTION;
            int messageType = 0;
            ImageIcon icon = null;

            // 警告
            if (message.isWarning()) {
                messageType = JOptionPane.WARNING_MESSAGE;
                icon = getWarningIcon();
            } else {
                // 通常
                messageType = JOptionPane.INFORMATION_MESSAGE;
                icon = getNoticeIcon();
            }
            // ダイアログ
            frame.setVisible(true);
            System.out.println("ほげら" + Thread.currentThread().getName());
            ret = JOptionPane.showConfirmDialog(frame, dialogMessage, title, option, messageType, icon);
            frame.setVisible(false);

            // booleanに変換
            if (ret == 0) {
                return true;
            } else {
                return false;
            }
        } else {
            final List<Boolean> result = new ArrayList<Boolean>();
            // イベントディスパッチではない場合はイベントディスパッチで呼びなおし
            try {
                SwingUtilities.invokeAndWait(new Runnable() {
                    @Override
                    public void run() {
                        result.add(showEventMessage(calendarEventList));
                    }
                });
            } catch (InterruptedException e) {
                // 例外はスルー
            } catch (InvocationTargetException e) {
                // 例外はスルー
            }
            // 念のためサイズ確認してリターン
            if (result.size() != 0) {
                return result.get(0);
            }
            return true;
        }
    }