import java.util.ArrayList;\r
import java.util.Calendar;\r
import java.util.GregorianCalendar;\r
-import java.util.HashMap;\r
import java.util.regex.Matcher;\r
import java.util.regex.Pattern;\r
\r
import tainavi.TVProgramIterator.IterationType;\r
import tainavi.VWMainWindow.MWinTab;\r
\r
+\r
/**\r
* 新聞形式タブのクラス\r
* @since 3.15.4β {@link Viewer}から分離\r
*/\r
-public abstract class AbsPaperView extends JPanel implements VWTimerRiseListener {\r
+public abstract class AbsPaperView extends JPanel implements TickTimerListener,HDDRecorderListener {\r
\r
private static final long serialVersionUID = 1L;\r
\r
public static String getViewName() { return "新聞形式"; }\r
\r
- //public void setDebug(boolean b) { debug = b; }\r
- //private static boolean debug = false;\r
+ public void setDebug(boolean b) { debug = b; }\r
+ private static boolean debug = false;\r
\r
\r
/*******************************************************************************\r
protected abstract boolean isTabSelected(MWinTab tab);\r
protected abstract void setSelectedTab(MWinTab tab);\r
\r
- protected abstract String getSelectedRecorderOnToolbar();\r
protected abstract boolean isFullScreen();\r
/**\r
* ページャーコンボボックスを更新してほしい\r
private static final String TreeExpRegFile_Paper = "env"+File.separator+"tree_expand_paper.xml";\r
\r
private static final int TIMEBAR_START = Viewer.TIMEBAR_START;\r
+\r
+ //\r
+ private static final String TUNERLABEL_PICKUP = "PICKUP";\r
\r
// 定数ではないが\r
\r
jLayeredPane_space_main_view_byMakeshift.setLayer(b2, 0);\r
\r
// リスナーを設定する\r
- b2.addMouseListener(mListner);\r
- b2.addMouseMotionListener(mListner);\r
+ b2.addMouseListener(ml_risepopup);\r
+ b2.addMouseMotionListener(ml_risepopup);\r
frameUnused.add(b2);\r
}\r
StdAppendMessage(MSGID+"番組枠描画バッファを初期化: "+framebuffersize);\r
JRMLabel.setHeightMultiplier(bounds.getPaperHeightMultiplier() * paperHeightZoom);\r
\r
// 表示範囲\r
- GregorianCalendar cal = CommonUtils.getCalendar(String.format("%s %02d:00",date.substring(0,10),TIMEBAR_START));\r
- String startDateTime = CommonUtils.getDateTime(cal);\r
- cal.add(Calendar.HOUR_OF_DAY, 24);\r
- String endDateTime = CommonUtils.getDateTime(cal);\r
- \r
- // 基準日\r
- String critDateTime = CommonUtils.getCritDateTime(env.getDisplayPassedReserve());\r
+ GregorianCalendar cal = CommonUtils.getCritCalendar(date);\r
+ String topDateTime = CommonUtils.getDateTime(cal);\r
+ cal.add(Calendar.DATE, 1);\r
+ String bottomDateTime = CommonUtils.getDateTime(cal);\r
\r
- // 予約枠\r
- HashMap<String,Boolean> misCN = new HashMap<String, Boolean>();\r
+ // \r
+ String passedCritDateTime = CommonUtils.getCritDateTime(env.getDisplayPassedReserve());\r
\r
// ツールバーで選択されている実レコーダ\r
- String myself = ( env.getEffectComboToPaper() ) ? (getSelectedRecorderOnToolbar()) : (null);\r
+ String myself = ( env.getEffectComboToPaper() ) ? (getSelectedRecorderId()) : (null);\r
\r
- if ( myself == null || myself.length() > 0 ) {\r
- \r
- // ピックアップはここに入らない\r
- \r
- HDDRecorderList recs = recorders.findInstance(myself);\r
- \r
- for ( HDDRecorder recorder : recs )\r
- {\r
- //System.err.println(DBGID+recorder.Myself());\r
+ // 予約枠の描画\r
+ drawReserveBorders(date, Center, q, topDateTime, bottomDateTime, passedCritDateTime, myself);\r
+ \r
+ // ピックアップ枠の描画\r
+ drawPickupBorders(date, Center, q, topDateTime, bottomDateTime, passedCritDateTime, TUNERLABEL_PICKUP);\r
+ }\r
+ private void drawReserveBorders(String date, String Center, int q, String topDateTime, String bottomDateTime, String passedCritDateTime, String myself) {\r
+ if ( myself == HDDRecorder.SELECTED_PICKUP ) {\r
+ return;\r
+ }\r
+ for ( HDDRecorder recorder : getSelectedRecorderList() ) {\r
+ for ( ReserveList r : recorder.getReserves()) {\r
\r
- for ( ReserveList r : recorder.getReserves()) {\r
- // Exec == ON ?\r
- if (env.getDisplayOnlyExecOnEntry() && ! r.getExec()) {\r
- //StdAppendMessage("@Exec = OFF : "+r.getTitle());\r
- continue;\r
+ // 「実行のみ表示」で無効な予約は表示しない\r
+ if ( env.getDisplayOnlyExecOnEntry() && ! r.getExec() ) {\r
+ continue;\r
+ }\r
+ \r
+ // 放送局名の確認\r
+ if ( r.getCh_name() == null ) {\r
+ if ( r.getChannel() == null ) {\r
+ // CHコードすらないのはバグだろう\r
+ System.err.println(ERRID+"予約情報にCHコードが設定されていません。バグの可能性があります。 recid="+recorder.Myself()+" chname="+r.getCh_name());\r
}\r
- // 局が一致して\r
- if (r.getCh_name() == null) {\r
- if ( r.getChannel() == null ) {\r
- System.err.println(ERRID+"予約情報にCHコードが設定されていません。バグの可能性があります。 recid="+recorder.Myself()+" chname="+r.getCh_name());\r
+ continue;\r
+ }\r
+ \r
+ // 描画本体\r
+ if (r.getCh_name().equals(Center)) {\r
+ \r
+ // 開始終了日時リストを生成する\r
+ ArrayList<String> starts = new ArrayList<String>();\r
+ ArrayList<String> ends = new ArrayList<String>();\r
+ CommonUtils.getStartEndList(starts, ends, r);\r
+ \r
+ // 予約枠を描画する\r
+ for ( int j=0; j<starts.size(); j++ ) {\r
+ if ( passedCritDateTime.compareTo(ends.get(j)) > 0 ) {\r
+ // 過去情報の表示が制限されている場合\r
continue;\r
}\r
- if (r.getChannel().length() > 0) {\r
- misCN.put(r.getChannel(),true);\r
- }\r
- continue;\r
- }\r
- \r
- if (r.getCh_name().equals(Center)) {\r
\r
- // 開始終了日時リストを生成する\r
- ArrayList<String> starts = new ArrayList<String>();\r
- ArrayList<String> ends = new ArrayList<String>();\r
- CommonUtils.getStartEndList(starts, ends, r);\r
- \r
- // 予約枠を描画する\r
- for (int j=0; j<starts.size(); j++) {\r
- if (critDateTime.compareTo(ends.get(j)) <= 0) {\r
- putReserveBorderSub(date,Center,startDateTime,endDateTime,starts.get(j),ends.get(j),r.getAhh(),r.getAmm(),r.getRec_min(),r.getTuner(),recorder.getColor(r.getTuner()),r.getExec(),q);\r
- }\r
- }\r
+ drawBorder(date,Center,topDateTime,bottomDateTime,starts.get(j),ends.get(j),r.getRec_min(),r.getTuner(),recorder.getColor(r.getTuner()),r.getExec(),q);\r
}\r
}\r
}\r
}\r
- \r
- // ピックアップ枠\r
- TVProgram tvp = tvprograms.getPickup();\r
- for ( ProgList pl : tvp.getCenters() ) {\r
- if ( pl.Center.equals(Center) ) {\r
- for ( ProgDateList pcl : pl.pdate ) {\r
- for ( ProgDetailList tvd : pcl.pdetail ) {\r
- putReserveBorderSub(date,Center,startDateTime,endDateTime,tvd.startDateTime,tvd.endDateTime,tvd.start.substring(0,2),tvd.start.substring(3,5),String.valueOf(tvd.length),"PICKUP",CommonUtils.color2str(env.getPickedColor()),false,q);\r
+ }\r
+ private void drawPickupBorders(String date, String Center, int q, String topDateTime, String bottomDateTime, String passedCritDateTime, String tuner) {\r
+ for ( ProgList pl : tvprograms.getPickup().getCenters() ) {\r
+ if ( ! pl.Center.equals(Center) ) {\r
+ continue;\r
+ }\r
+ for ( ProgDateList pcl : pl.pdate ) {\r
+ for ( ProgDetailList tvd : pcl.pdetail ) {\r
+ if ( passedCritDateTime.compareTo(tvd.endDateTime) > 0 ) {\r
+ // 過去情報の表示が制限されている場合\r
+ continue;\r
}\r
+ \r
+ drawBorder(date,Center,topDateTime,bottomDateTime,tvd.startDateTime,tvd.endDateTime,tvd.length,tuner,env.getPickedColor(),false,q);\r
}\r
}\r
}\r
}\r
- private void putReserveBorderSub(String date, String Center, String startDateTime, String endDateTime, String start, String end, String ahh, String amm, String recmin, String tuner, String bordercol,boolean exec,int col) {\r
- //\r
+ private void drawBorder(String date, String Center, String topDateTime, String bottomDateTime, String startDateTime, String endDateTime, String recmin, String tuner, String bordercol, boolean exec, int col) {\r
+ drawBorder(date, Center, topDateTime, bottomDateTime, startDateTime, endDateTime, Integer.valueOf(recmin), tuner, CommonUtils.str2color(bordercol), exec, col);\r
+ }\r
+ private void drawBorder(String date, String Center, String topDateTime, String bottomDateTime, String startDateTime, String endDateTime, int recmin, String tuner, Color bordercol, boolean exec, int col) {\r
+ \r
+ GregorianCalendar ca = CommonUtils.getCalendar(startDateTime);\r
+ int ahh = ca.get(Calendar.HOUR_OF_DAY);\r
+ int amm = ca.get(Calendar.MINUTE);\r
+ \r
int row = 0;\r
int length = 0;\r
- if (startDateTime.compareTo(start) <= 0 && start.compareTo(endDateTime) < 0) {\r
- //\r
- row = Integer.valueOf(ahh) - TIMEBAR_START;\r
+ if (topDateTime.compareTo(startDateTime) <= 0 && startDateTime.compareTo(bottomDateTime) < 0) {\r
+ // 開始時刻が表示範囲内にある\r
+ row = ahh - TIMEBAR_START;\r
if (row < 0) {\r
row += 24;\r
}\r
- row = row*60 + Integer.valueOf(amm);\r
- length = Integer.valueOf(recmin);\r
+ row = row*60 + amm;\r
+ length = recmin;\r
}\r
- else if (start.compareTo(startDateTime) < 0 && startDateTime.compareTo(end) < 0) {\r
- //\r
+ else if (startDateTime.compareTo(topDateTime) < 0 && topDateTime.compareTo(endDateTime) < 0) {\r
+ // 表示開始位置が番組の途中にある\r
row = 0;\r
- length = Integer.valueOf(recmin) - (TIMEBAR_START*60 - Integer.valueOf(ahh)*60 - Integer.valueOf(amm));\r
+ length = recmin - (TIMEBAR_START*60 - ahh*60 - amm);\r
}\r
else {\r
return;\r
}\r
\r
{\r
- // 枠の色\r
- Color rbc = CommonUtils.str2color(bordercol);\r
- \r
// 重複予約の場合のエンコーダマーク表示位置の調整\r
int rc = 0;\r
//int rw = 0;\r
}\r
\r
// エンコーダの区別がないものは"■"を表示する\r
- rb.setEncBackground(rbc);\r
- rb.setBorder(new LineBorder(rbc,4));\r
- if ( tuner != null && tuner.equals("PICKUP") ) {\r
+ rb.setEncBackground(bordercol);\r
+ rb.setBorder(new LineBorder(bordercol,4));\r
+ if ( tuner != null && tuner.equals(TUNERLABEL_PICKUP) ) {\r
rb.setEncForeground(env.getPickedFontColor());\r
}\r
else if ( exec ) {\r
jLayeredPane_space_main_view.setLayer(b2, 0);\r
\r
// リスナーを設定する\r
- b2.addMouseListener(mListner);\r
- b2.addMouseMotionListener(mListner);\r
+ b2.addMouseListener(ml_risepopup);\r
+ b2.addMouseMotionListener(ml_risepopup);\r
}\r
if (jLayeredPane_space_main_view == jLayeredPane_space_main_view_byMakeshift) {\r
frameUsed.add(b2);\r
return -1;\r
}\r
\r
+ \r
+ /*******************************************************************************\r
+ * ハンドラ―メソッド\r
+ ******************************************************************************/\r
+ \r
+ /**\r
+ * ツールバーでレコーダの選択イベントが発生\r
+ */\r
+ @Override\r
+ public void valueChanged(HDDRecorderSelectionEvent e) {\r
+ if (debug) System.out.println(DBGID+"recorder selection rised");\r
+ \r
+ // 選択中のレコーダ情報を保存する\r
+ src_recsel = (HDDRecorderSelectable) e.getSource();\r
+ \r
+ // 予約枠を書き換える\r
+ updateReserveBorder(null);\r
+ }\r
+ \r
+ private String getSelectedRecorderId() {\r
+ return ( src_recsel!=null ? src_recsel.getSelectedId() : null );\r
+ }\r
+ \r
+ private HDDRecorderList getSelectedRecorderList() {\r
+ return ( src_recsel!=null ? src_recsel.getSelectedList() : null );\r
+ }\r
+ \r
+ private HDDRecorderSelectable src_recsel;\r
+ \r
+ \r
+ /**\r
+ * レコーダ情報の変更イベントが発生\r
+ */\r
+ @Override\r
+ public void stateChanged(HDDRecorderChangeEvent e) {\r
+ // テーブルをリフレッシュする処理\r
+ \r
+ }\r
+ \r
+ \r
+\r
/*******************************************************************************\r
* リスナー\r
******************************************************************************/\r
* 現在時刻追従スクロール\r
*/\r
@Override\r
- public void timerRised(VWTimerRiseEvent e) {\r
+ public void timerRised(TickTimerRiseEvent e) {\r
\r
String curDT = CommonUtils.getDate529(0,true);\r
\r
/**\r
* 番組枠につけるマウス操作のリスナー\r
*/\r
- private final MouseInputListener mListner = new MouseInputListener() {\r
+ private final MouseInputListener ml_risepopup = new MouseInputListener() {\r
//\r
private final Cursor defCursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);\r
private final Cursor hndCursor = Cursor.getPredefinedCursor(Cursor.HAND_CURSOR);\r
MWin.appendMessage(MSGID+"過去ログでダブルクリックは利用できません");\r
ringBeep();\r
}\r
+ \r
return;\r
}\r
+ \r
if (e.getClickCount() == 2) {\r
- // RADIOは閲覧のみ\r
- if (tvd.type == ProgType.PROG && tvd.subtype == ProgSubtype.RADIO) {\r
- return;\r
- }\r
- // レコーダが選択されていない場合はなにもしない\r
- if (recorders.size() == 0) {\r
- return;\r
- }\r
- \r
// 左ダブルクリックで予約ウィンドウを開く\r
- \r
- //VWReserveDialog rD = new VWReserveDialog(0, 0, env, tvprograms, recorders, avs, chavs, stwin);\r
- CommonSwingUtils.setLocationCenter(parent,rD);\r
- //rD.clear();\r
- \r
- // サブタイトルを番組追跡の対象から外す\r
- boolean succeeded = false;\r
- if ( ! env.getSplitEpno() && env.getTraceOnlyTitle() ) {\r
- //String[] d = tvp.doSplitEpno(tvd.genre, tvd.title);\r
- succeeded = rD.open(tvd,tvd.title,TraceKey.defaultFazzyThreshold);\r
- }\r
- else {\r
- succeeded = rD.open(tvd);\r
- }\r
- \r
- if (succeeded) {\r
- rD.setVisible(true);\r
- }\r
- else {\r
- rD.dispose();\r
- }\r
- \r
- if (rD.isReserved()) {\r
- updateReserveDisplay();\r
- updateReserveBorder(tvd.center);\r
- }\r
+ openReserveDialog(tvd); \r
}\r
}\r
else if (e.getButton() == MouseEvent.BUTTON2) {\r
addToPickup(tvd);\r
}\r
}\r
+ \r
+ private void openReserveDialog(ProgDetailList tvd) {\r
+ \r
+ // レコーダが登録されていない場合はなにもしない\r
+ if (recorders.size() == 0) {\r
+ return;\r
+ }\r
+\r
+ // ダイアログの位置指定\r
+ CommonSwingUtils.setLocationCenter(parent,rD);\r
+ \r
+ // サブタイトルを番組追跡の対象から外す\r
+ boolean succeeded = false;\r
+ if ( ! env.getSplitEpno() && env.getTraceOnlyTitle() ) {\r
+ succeeded = rD.open(tvd,tvd.title,TraceKey.defaultFazzyThreshold);\r
+ }\r
+ else {\r
+ succeeded = rD.open(tvd);\r
+ }\r
+ \r
+ if (succeeded) {\r
+ rD.setVisible(true);\r
+ }\r
+ else {\r
+ rD.dispose();\r
+ }\r
+ \r
+ if (rD.isReserved()) {\r
+ updateReserveDisplay();\r
+ updateReserveBorder(tvd.center);\r
+ }\r
+ }\r
\r
/**\r
* 詳細情報の自動表示\r
\r
rb.reVBounds();\r
\r
- if ( rb.getEncoder().equals("PICKUP") ) {\r
+ if ( rb.getEncoder().equals(TUNERLABEL_PICKUP) ) {\r
rb.setEncBackground(ec.getPickedColor());\r
rb.setEncForeground(ec.getPickedFontColor());\r
rb.setBorder(new LineBorder(ec.getPickedColor(),4));\r
import javax.swing.event.ChangeEvent;\r
import javax.swing.event.ChangeListener;\r
\r
-import taiSync.ReserveInfo;\r
import tainavi.HDDRecorder.RecType;\r
import tainavi.SearchKey.TargetId;\r
import tainavi.TVProgram.ProgFlags;\r
/**\r
* メインな感じ\r
*/\r
-public class Viewer extends JFrame implements ChangeListener,VWTimerRiseListener {\r
+public class Viewer extends JFrame implements ChangeListener,TickTimerListener {\r
\r
private static final long serialVersionUID = 1L;\r
\r
private final TVProgramList progPlugins = new TVProgramList(); // Web番組表プラグイン(テンプレート)\r
private final TVProgramList tvprograms = new TVProgramList(); // Web番組表プラグイン(実際に利用するもの)\r
\r
- private final VWTimer timer_now = new VWTimer(); // 毎分00秒に起動して処理をキックするタイマー\r
+ private final TickTimer timer_now = new TickTimer(); // 毎分00秒に起動して処理をキックするタイマー\r
\r
// 初期化的な\r
private boolean logging = true; // ログ出力する\r
protected void setSelectedTab(MWinTab tab) { mainWindow.setSelectedTab(tab); }\r
\r
@Override\r
- protected String getSelectedRecorderOnToolbar() { return toolBar.getSelectedRecorder(); }\r
- @Override\r
protected boolean isFullScreen() { return toolBar.isFullScreen(); }\r
@Override\r
protected void setSelectedPagerIndex(int idx) {\r
recorded.redrawRecordedList();\r
}\r
\r
+ /*\r
// 新聞形式の予約枠を書き換えるかもよ?\r
if (env.getEffectComboToPaper()) {\r
paper.updateReserveBorder(null);\r
}\r
+ */\r
\r
timer_now.start();\r
\r
\r
// 類似予約あり\r
likeRsvList.add(new LikeReserveItem(recorder, r, d));\r
-\r
- for ( LikeReserveItem lr : likeRsvList ) {\r
- System.out.println(lr.getDist()+", "+lr.getRsv().getTitle());\r
- }\r
- System.out.println("********");\r
}\r
\r
}\r
\r
- \r
return likeRsvList;\r
}\r
- \r
private boolean isLikeTitle(ProgDetailList tvd, ReserveList r, String keywordPop, int thresholdVal) {\r
\r
if (env.getDisableFazzySearch() == false) {\r
\r
return false;\r
}\r
- \r
private boolean isLikeChannel(ProgDetailList tvd, ReserveList r) {\r
\r
if ( r.getCh_name() == null ) {\r
\r
return true;\r
}\r
- \r
private Long getLikeDist(ProgDetailList tvd, ReserveList r, long rangeLikeRsv) {\r
\r
Long d = null;\r
* @return true:前回終了時の設定がある場合\r
*/\r
private boolean buildMainWindow() {\r
- //\r
- mainWindow.addToolBar(toolBar);\r
- mainWindow.addStatusArea(mwin);\r
- \r
- mainWindow.addTab(listed, MWinTab.LISTED);\r
- mainWindow.addTab(paper, MWinTab.PAPER);\r
- mainWindow.addTab(reserved, MWinTab.RSVED);\r
- mainWindow.addTab(recorded, MWinTab.RECED);\r
- mainWindow.addTab(autores, MWinTab.AUTORES);\r
- mainWindow.addTab(setting, MWinTab.SETTING);\r
- mainWindow.addTab(recsetting, MWinTab.RECSET);\r
- mainWindow.addTab(chsetting, MWinTab.CHSET);\r
- mainWindow.addTab(chsortsetting, MWinTab.CHSORT);\r
- mainWindow.addTab(chconvsetting, MWinTab.CHCONV);\r
- mainWindow.addTab(chdatsetting, MWinTab.CHDAT);\r
\r
- //新聞描画枠のリセット\r
- paper.clearPanel();\r
- paper.buildMainViewByDate();\r
+ // コンポーネント作成\r
+ {\r
+ // メインウィンドウの作成\r
+ mainWindow = new VWMainWindow();\r
\r
- // サイドツリーのデフォルトノードの選択\r
- paper.selectTreeDefault();\r
- listed.selectTreeDefault();\r
+ // 内部クラスのインスタンス生成\r
+ toolBar = new VWToolBar();\r
+ listed = new VWListedView();\r
+ paper = new VWPaperView();\r
+ reserved = new VWReserveListView();\r
+ recorded = new VWRecordedListView();\r
+ autores = new VWAutoReserveListView();\r
+ setting = new VWSettingView();\r
+ recsetting = new VWRecorderSettingView();\r
+ chsetting = new VWChannelSettingView();\r
+ chdatsetting = new VWChannelDatSettingView();\r
+ chsortsetting = new VWChannelSortView();\r
+ chconvsetting = new VWChannelConvertView();\r
+ }\r
\r
- if ( recInfoList.size() > 0 ) {\r
- // 前回終了時設定が存在する場合\r
- \r
- // 開いていたタブ\r
- mainWindow.setShowSettingTabs(bounds.getShowSettingTabs());\r
- \r
- // ステータスエリアの高さ\r
- mwin.setRows(bounds.getStatusRows());\r
- \r
- return false;\r
+ // 初期値\r
+ {\r
+ // 設定\r
+ toolBar.setDebug(env.getDebug());\r
+ autores.setDebug(env.getDebug());\r
+ \r
+ // ページャーの設定\r
+ toolBar.setPagerItems();\r
}\r
\r
- // 前回終了時設定が存在しない場合\r
+ // コンポーネントの組み立て\r
+ {\r
+ // ツールバーなど\r
+ mainWindow.addToolBar(toolBar);\r
+ mainWindow.addStatusArea(mwin);\r
+ \r
+ // タブ群\r
+ mainWindow.addTab(listed, MWinTab.LISTED);\r
+ mainWindow.addTab(paper, MWinTab.PAPER);\r
+ mainWindow.addTab(reserved, MWinTab.RSVED);\r
+ mainWindow.addTab(recorded, MWinTab.RECED);\r
+ mainWindow.addTab(autores, MWinTab.AUTORES);\r
+ mainWindow.addTab(setting, MWinTab.SETTING);\r
+ mainWindow.addTab(recsetting, MWinTab.RECSET);\r
+ mainWindow.addTab(chsetting, MWinTab.CHSET);\r
+ mainWindow.addTab(chsortsetting, MWinTab.CHSORT);\r
+ mainWindow.addTab(chconvsetting, MWinTab.CHCONV);\r
+ mainWindow.addTab(chdatsetting, MWinTab.CHDAT);\r
+ }\r
+ \r
+ // ステータスエリアを開く\r
+ setStatusVisible(bounds.getShowStatus());\r
+ \r
+ //新聞描画枠のリセット\r
+ paper.clearPanel();\r
+ paper.buildMainViewByDate();\r
+ \r
return true;\r
}\r
\r
}\r
\r
@Override\r
- public void timerRised(VWTimerRiseEvent e) {\r
+ public void timerRised(TickTimerRiseEvent e) {\r
if (env.getDebug()) System.out.println("Timer Rised: now="+CommonUtils.getDateTimeYMDx(e.getCalendar()));\r
setTitleBar();\r
}\r
// (新聞形式の)ツールチップの表示時間を変更する\r
setTooltipDelay();\r
\r
- boolean firstRun = true;\r
+ // ウィンドウを構築\r
try {\r
- // メインウィンドウの作成\r
- mainWindow = new VWMainWindow();\r
- \r
- // 内部クラスのインスタンス生成\r
- toolBar = new VWToolBar();\r
- listed = new VWListedView();\r
- paper = new VWPaperView();\r
- reserved = new VWReserveListView();\r
- recorded = new VWRecordedListView();\r
- autores = new VWAutoReserveListView();\r
- setting = new VWSettingView();\r
- recsetting = new VWRecorderSettingView();\r
- chsetting = new VWChannelSettingView();\r
- chdatsetting = new VWChannelDatSettingView();\r
- chsortsetting = new VWChannelSortView();\r
- chconvsetting = new VWChannelConvertView();\r
- \r
- // 設定のほにゃらら\r
- toolBar.setDebug(env.getDebug());\r
- autores.setDebug(env.getDebug());\r
-\r
- // ページャーの設定\r
- toolBar.setPagerItems();\r
- \r
- // ウィンドウを構築\r
- firstRun = buildMainWindow();\r
- \r
- // ステータスエリアを開く\r
- setStatusVisible(bounds.getShowStatus());\r
+ buildMainWindow();\r
}\r
catch ( Exception e ) {\r
System.err.println("【致命的エラー】ウィンドウの構築に失敗しました");\r
}\r
});\r
\r
- // タブを選択\r
- ShowInitTab();\r
- \r
// 初回起動時はレコーダの登録を促す\r
- if (firstRun) {\r
+ if ( recorders.size() == 0 ) {\r
Container cp = getContentPane();\r
JOptionPane.showMessageDialog(cp, "レコーダが登録されていません。\n最初に登録を行ってください。\n番組表だけを使いたい場合は、\nNULLプラグインを登録してください。");\r
}\r
\r
- // メインウィンドウをスプラッシュからコンポーネントに入れ替える\r
- this.setVisible(false);\r
- this.setContentPane(mainWindow);\r
- setInitBounds();\r
- this.setVisible(true);\r
- \r
- // タイトル更新\r
- setTitleBar();\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
+ // イベントリスナーの登録 \r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
\r
// [ツールバー/共通] レコーダ情報変更\r
toolBar.addHDDRecorderChangeListener(autores);\r
\r
// [ツールバー/レコーダ選択]\r
+ toolBar.addHDDRecorderSelectionListener(paper); // 新聞形式\r
toolBar.addHDDRecorderSelectionListener(autores); // 自動予約一覧\r
toolBar.addHDDRecorderSelectionListener(rdialog); // 予約ダイアログ\r
+ \r
+ // [タイマー] タイトルバー更新/リスト形式の現在時刻ノード/新聞形式の現在時刻ノード\r
+ timer_now.addTickTimerRiseListener(this);\r
+ timer_now.addTickTimerRiseListener(listed);\r
+ timer_now.addTickTimerRiseListener(paper);\r
\r
- // レコーダ選択イベントキック\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
+ // [Fire!] レコーダ選択\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
toolBar.setSelectedRecorder(bounds.getSelectedRecorderId());\r
\r
- // [タイマー] タイトルバー更新/リスト形式の現在時刻ノード/新聞形式の現在時刻ノード\r
- timer_now.addVWTimerRiseListener(this);\r
- timer_now.addVWTimerRiseListener(listed);\r
- timer_now.addVWTimerRiseListener(paper);\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
+ // [Fire!] サイドツリーのデフォルトを選択することで番組情報の描画を開始する\r
+ // ※ここ以前だとぬぽとかOOBとか出るかもよ!\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
+ paper.selectTreeDefault();\r
+ listed.selectTreeDefault();\r
\r
- // タイマー起動\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
+ // メインウィンドウをスプラッシュからコンポーネントに入れ替える\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
+ this.setVisible(false);\r
+ this.setContentPane(mainWindow);\r
+ setInitBounds();\r
+ this.setVisible(true);\r
+ \r
+ setTitleBar(); // タイトルバー更新\r
+ \r
+ ShowInitTab(); // 前回開いていたタブを開く\r
+ \r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
+ // タイマーを起動する\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
timer_now.start();\r
\r
- // メッセージだ\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
+ // 初期化終了\r
+ // ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★\r
mwin.appendMessage(String.format("タイニー番組ナビゲータが起動しました (VersionInfo:%s on %s)",VersionInfo.getVersion(),VersionInfo.getEnvironment()));\r
- \r
initialized = true;\r
}\r
}\r