• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

よく使われているワード(クリックで追加)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

タイニー番組ナビゲータ本体


コミットメタ情報

リビジョンf83c61de4ec4dac07f7ba38cd9a2bb757f94fbb7 (tree)
日時2023-04-07 22:55:56
作者Masahiko Kimura <mkimura@u01....>
コミッターMasahiko Kimura

ログメッセージ

Ver.1.13.7 (2023/4/7)
1. [新聞形式]ページャーのツールチップでページ内の放送局を一覧表示する
2. [新聞形式]ヘッダーの右クリックメニューで放送局別表示と放送局表示(1週おき)を切り替えられるようにする
3. [新聞形式]同じく放送局別表示(1週おき)で曜日を前後に切り替えられるようにする
4. [全般]テキストボックスの右クリックメニューに「Googleで検索」「Syobocalで検索」を追加する

変更サマリ

差分

--- a/TinyBannavi/src/tainavi/AbsPaperView.java
+++ b/TinyBannavi/src/tainavi/AbsPaperView.java
@@ -2544,7 +2544,78 @@ public abstract class AbsPaperView extends JPanel implements TickTimerListener,H
25442544 }
25452545
25462546 /*
2547- * 放送局別で前のページに移動する
2547+ * 放送局別1週間おき表示で前の日に移動する
2548+ */
2549+ public void moveToPrevDateIndex(){
2550+ if (!isPrevDateIndexEnabled())
2551+ return;
2552+
2553+ PassedProgram passed = tvprograms.getPassed();
2554+
2555+ String date = passed.getPrevDate(startDate, 1);
2556+ if (date == null)
2557+ return;
2558+
2559+ startDate = date;
2560+
2561+ // 表を描画し直す
2562+ redrawByCurrentSelection();
2563+ }
2564+
2565+ /*
2566+ * 放送局別1週間おき表示で前の日に移動可能かを返す
2567+ */
2568+ public boolean isPrevDateIndexEnabled(){
2569+ PassedProgram passed = tvprograms.getPassed();
2570+
2571+ String date = passed.getPrevDate(startDate, 1);
2572+
2573+ return date != null;
2574+ }
2575+
2576+ /*
2577+ * 放送局別1週間おき表示で次の日に移動する
2578+ */
2579+ public void moveToNextDateIndex(){
2580+ if (!isNextDateIndexEnabled())
2581+ return;
2582+
2583+ PassedProgram passed = tvprograms.getPassed();
2584+
2585+ String date = passed.getNextDate(startDate, 1);
2586+ if (date == null)
2587+ date = CommonUtils.getDate529(0, true);
2588+
2589+ startDate = date;
2590+
2591+ // 表を描画し直す
2592+ redrawByCurrentSelection();
2593+ }
2594+
2595+ /*
2596+ * 放送局別1週間おき表示で次の日に移動可能かを返す
2597+ */
2598+ public boolean isNextDateIndexEnabled(){
2599+ String today = CommonUtils.getDate529(0, true);
2600+ if (this.byCenterModeDayInterval == 1){
2601+ return (startDate.compareTo(today) < 0);
2602+ }
2603+
2604+ GregorianCalendar ct = CommonUtils.getCalendar(today);
2605+ ct.add(GregorianCalendar.DAY_OF_MONTH, 7);
2606+ String dateMax = CommonUtils.getDate(ct);
2607+
2608+ ct = CommonUtils.getCalendar(startDate);
2609+ if (ct == null)
2610+ return false;
2611+ ct.add(GregorianCalendar.DAY_OF_MONTH, (env.getDatePerPassedPage()-1)*this.byCenterModeDayInterval+1);
2612+ String date = CommonUtils.getDate(ct);
2613+
2614+ return (date.compareTo(dateMax) <= 0);
2615+ }
2616+
2617+ /*
2618+ * 放送局別1週間おき表示で前の日に移動する
25482619 */
25492620 public void moveToPrevDatePage(){
25502621 PassedProgram passed = tvprograms.getPassed();
@@ -3259,7 +3330,7 @@ public abstract class AbsPaperView extends JPanel implements TickTimerListener,H
32593330 // ポインタの位置
32603331 Point p = e.getPoint();
32613332
3262- JMenuItem menuItem = new JMenuItem(String.format("放送局別表示【%s】", center));
3333+ JMenuItem menuItem = new JMenuItem(String.format("放送局別表示へ切り替え【%s】", center));
32633334 Font f = menuItem.getFont();
32643335 menuItem.setFont(f.deriveFont(f.getStyle()|Font.BOLD));
32653336 menuItem.addActionListener(new ActionListener() {
@@ -3278,7 +3349,7 @@ public abstract class AbsPaperView extends JPanel implements TickTimerListener,H
32783349 });
32793350 pop.add(menuItem);
32803351
3281- menuItem = new JMenuItem(String.format("放送局別1週おき表示【%s】", center));
3352+ menuItem = new JMenuItem(String.format("放送局別表示(1週おき)へ切り替え【%s】", center));
32823353 menuItem.addActionListener(new ActionListener() {
32833354 public void actionPerformed(ActionEvent e) {
32843355 byCenterModeDayInterval = 7;
@@ -3340,6 +3411,101 @@ public abstract class AbsPaperView extends JPanel implements TickTimerListener,H
33403411 redrawByDateWithCenter(center, date);
33413412 }
33423413 }
3414+ else if (e.getButton() == MouseEvent.BUTTON3){
3415+ JPopupMenu pop = new JPopupMenu();
3416+ // ポインタの位置
3417+ Point p = e.getPoint();
3418+ String date = ((JTXTLabel)e.getSource()).getValue();
3419+
3420+ JMenuItem menuItem = new JMenuItem(String.format("日付表示へ切り替え【%s】", date) );
3421+ Font f = menuItem.getFont();
3422+ menuItem.setFont(f.deriveFont(f.getStyle()|Font.BOLD));
3423+ menuItem.addActionListener(new ActionListener() {
3424+ public void actionPerformed(ActionEvent e) {
3425+ JTreeLabel.Nodes node = jLabel_tree.getNode();
3426+ String value = jLabel_tree.getValue();
3427+ if (node == null || value == null)
3428+ return;
3429+
3430+ String center = value;
3431+
3432+ StdAppendMessage(MSGID+"日付表示に切り替え:"+date);
3433+
3434+ String today = CommonUtils.getDate529(0, true);
3435+
3436+ // 過去日の場合、過去ログの日付を選択する
3437+ if (date.compareTo(today) < 0){
3438+ // 指定した日付のノードがツリーになければ作成する
3439+ addPassedNodeIfNotExist(date);
3440+ }
3441+
3442+ redrawByDateWithCenter(center, date);
3443+ }
3444+ });
3445+ pop.add(menuItem);
3446+
3447+ if (byCenterModeDayInterval == 7){
3448+ menuItem = new JMenuItem(String.format("放送局別表示へ切り替え【%s】", date));
3449+ menuItem.addActionListener(new ActionListener() {
3450+ public void actionPerformed(ActionEvent e) {
3451+ byCenterModeDayInterval = 1;
3452+
3453+ GregorianCalendar c = CommonUtils.getCalendar(date);
3454+ if (c != null)
3455+ startDate = date;
3456+ else
3457+ startDate = CommonUtils.getDate529(0, true);
3458+
3459+ reselectTree();
3460+ }
3461+ });
3462+ pop.add(menuItem);
3463+
3464+ pop.addSeparator();
3465+ GregorianCalendar c = CommonUtils.getCalendar(date);
3466+ c.add(Calendar.DATE, -1);
3467+
3468+ menuItem = new JMenuItem(String.format("前の曜日へ【%s】", CommonUtils.getWeekDayString(c.get(Calendar.DAY_OF_WEEK))));
3469+ menuItem.setEnabled(isPrevDateIndexEnabled());
3470+ menuItem.addActionListener(new ActionListener() {
3471+ public void actionPerformed(ActionEvent e) {
3472+ moveToPrevDateIndex();
3473+ }
3474+ });
3475+ pop.add(menuItem);
3476+
3477+ c = CommonUtils.getCalendar(date);
3478+ c.add(Calendar.DATE, 1);
3479+
3480+ menuItem = new JMenuItem(String.format("次の曜日へ【%s】", CommonUtils.getWeekDayString(c.get(Calendar.DAY_OF_WEEK))));
3481+ menuItem.setEnabled(isNextDateIndexEnabled());
3482+ menuItem.addActionListener(new ActionListener() {
3483+ public void actionPerformed(ActionEvent e) {
3484+ moveToNextDateIndex();
3485+ }
3486+ });
3487+ pop.add(menuItem);
3488+ }
3489+ else{
3490+ menuItem = new JMenuItem(String.format("放送局別表示(1週おき)へ切り替え【%s】", date));
3491+ menuItem.addActionListener(new ActionListener() {
3492+ public void actionPerformed(ActionEvent e) {
3493+ byCenterModeDayInterval = 7;
3494+
3495+ GregorianCalendar c = CommonUtils.getCalendar(date);
3496+ if (c != null)
3497+ startDate = date;
3498+ else
3499+ startDate = CommonUtils.getDate529(0, true);
3500+
3501+ reselectTree();
3502+ }
3503+ });
3504+ pop.add(menuItem);
3505+ }
3506+
3507+ pop.show((Component)e.getSource(), p.x, p.y);
3508+ }
33433509 }
33443510 };
33453511
--- a/TinyBannavi/src/tainavi/AbsToolBar.java
+++ b/TinyBannavi/src/tainavi/AbsToolBar.java
@@ -18,6 +18,7 @@ import java.net.URISyntaxException;
1818 import java.util.ArrayList;
1919 import java.util.Calendar;
2020 import java.util.GregorianCalendar;
21+import java.util.StringJoiner;
2122 import java.util.regex.Matcher;
2223 import java.util.regex.Pattern;
2324
@@ -914,6 +915,7 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
914915 // jComboBox_pager.setToolTipText(jComboBox_pager.getSelectedItem().toString());
915916
916917 updatePagerButtons();
918+ updatePagerTooltipText();
917919
918920 // イベント再開
919921 jComboBox_pager.addItemListener(il_pagerSelected);
@@ -942,9 +944,32 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
942944 jComboBox_pager.setSelectedIndex(idx);
943945
944946 updatePagerButtons();
947+ updatePagerTooltipText();
945948 }
946949 }
947950
951+ public void updatePagerTooltipText(){
952+ StringJoiner sb = new StringJoiner("<BR>");
953+ int pno = getSelectedPagerIndex();
954+ if (pno >= 0 && pno < getPagerCount()){
955+ String text = (String)jComboBox_pager.getItemAt(pno);
956+ Matcher ma = Pattern.compile("([1-9]/[1-9]) - (.*)").matcher(text);
957+ if (ma.find()){
958+ String [] centers = ma.group(2).split("、");
959+ int no = 1;
960+ for (String center : centers){
961+ sb.add(String.valueOf(no++) + ":" + center);
962+ }
963+
964+ String tooltip = "<HTML><B>" + TIPS_PAGER + "(" + ma.group(1) + ")</B><BR>" + sb.toString() + "</HTML>";
965+ jComboBox_pager.setToolTipText(tooltip);
966+ return;
967+ }
968+ }
969+
970+ jComboBox_pager.setToolTipText(TIPS_PAGER);
971+ }
972+
948973 /*
949974 * 前の放送局ページに移動する
950975 */
@@ -1452,6 +1477,7 @@ public abstract class AbsToolBar extends JToolBar implements HDDRecorderSelectab
14521477 if (e.getStateChange() == ItemEvent.SELECTED) {
14531478 if (debug) System.out.println(DBGID+"PAGER SELECTED");
14541479 redrawByPager();
1480+ updatePagerTooltipText();
14551481 // jComboBox_pager.setToolTipText(jComboBox_pager.getSelectedItem().toString());
14561482 }
14571483 }
--- a/TinyBannavi/src/tainavi/CommonUtils.java
+++ b/TinyBannavi/src/tainavi/CommonUtils.java
@@ -113,6 +113,19 @@ public class CommonUtils {
113113 }
114114
115115 /**
116+ * 曜日のINDEXから名称を取得する
117+ *
118+ * @param n 曜日INDEX
119+ * @return 曜日名称
120+ */
121+ public static String getWeekDayString(int n){
122+ if (n < 1 || n > 7)
123+ return "";
124+
125+ return WDTPTN[n-1];
126+ }
127+
128+ /**
116129 * 月日に年を補完
117130 */
118131 public static String getDateByMD(int m, int d, int wday, boolean addwstr) {
--- a/TinyBannavi/src/tainavi/TextEditPopupMenu.java
+++ b/TinyBannavi/src/tainavi/TextEditPopupMenu.java
@@ -1,8 +1,16 @@
11 package tainavi;
22
3+import java.awt.Desktop;
4+import java.awt.event.ActionEvent;
5+import java.awt.event.ActionListener;
36 import java.awt.event.KeyEvent;
47 import java.awt.event.MouseAdapter;
58 import java.awt.event.MouseEvent;
9+import java.io.IOException;
10+import java.io.UnsupportedEncodingException;
11+import java.net.URI;
12+import java.net.URISyntaxException;
13+import java.net.URLEncoder;
614
715 import javax.swing.Action;
816 import javax.swing.ActionMap;
@@ -11,6 +19,7 @@ import javax.swing.JMenuItem;
1119 import javax.swing.JPopupMenu;
1220 import javax.swing.KeyStroke;
1321 import javax.swing.text.DefaultEditorKit;
22+import javax.swing.text.JTextComponent;
1423
1524 public class TextEditPopupMenu extends MouseAdapter {
1625
@@ -18,24 +27,24 @@ public class TextEditPopupMenu extends MouseAdapter {
1827 public void mouseReleased(MouseEvent e) {
1928 mousePopup(e);
2029 }
21-
30+
2231 @Override
2332 public void mousePressed(MouseEvent e) {
2433 mousePopup(e);
2534 }
26-
35+
2736 @Override
2837 public void mouseExited(MouseEvent e) {
2938 }
30-
39+
3140 @Override
3241 public void mouseEntered(MouseEvent e) {
3342 }
34-
43+
3544 @Override
3645 public void mouseClicked(MouseEvent e) {
3746 }
38-
47+
3948 //
4049 private void mousePopup(MouseEvent e) {
4150 if (e.isPopupTrigger()) {
@@ -44,30 +53,87 @@ public class TextEditPopupMenu extends MouseAdapter {
4453 e.consume();
4554 }
4655 }
47-
56+
4857 private void showPopup(JComponent c, int x, int y) {
49-
58+ JTextComponent tc = (JTextComponent)c;
59+ boolean bc = tc.getSelectedText() != null;
60+ boolean bp = tc.isEditable();
61+
5062 JPopupMenu pmenu = new JPopupMenu();
51-
63+
5264 ActionMap am = c.getActionMap();
53-
65+
5466 Action cut = am.get(DefaultEditorKit.cutAction);
55- addMenu(pmenu, "切り取り(X)", cut, 'X', KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK));
67+ addMenu(pmenu, "切り取り(X)", cut, 'X', KeyStroke.getKeyStroke(KeyEvent.VK_X, KeyEvent.CTRL_DOWN_MASK), bc && bp);
5668
5769 Action copy = am.get(DefaultEditorKit.copyAction);
58- addMenu(pmenu, "コピー(C)", copy, 'C', KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK));
70+ addMenu(pmenu, "コピー(C)", copy, 'C', KeyStroke.getKeyStroke(KeyEvent.VK_C, KeyEvent.CTRL_DOWN_MASK), bc);
5971
6072 Action paste = am.get(DefaultEditorKit.pasteAction);
61- addMenu(pmenu, "貼り付け(V)", paste, 'V', KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_DOWN_MASK));
73+ addMenu(pmenu, "貼り付け(V)", paste, 'V', KeyStroke.getKeyStroke(KeyEvent.VK_V, KeyEvent.CTRL_DOWN_MASK), bp);
6274
6375 Action all = am.get(DefaultEditorKit.selectAllAction);
64- addMenu(pmenu, "すべて選択(A)", all, 'A', KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_DOWN_MASK));
65-
76+ addMenu(pmenu, "すべて選択(A)", all, 'A', KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_DOWN_MASK), true);
77+
78+ pmenu.addSeparator();
79+
80+ JMenuItem mi = new JMenuItemWithShortcut("Googleで検索(S)");
81+ mi.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KeyEvent.CTRL_DOWN_MASK));
82+ mi.addActionListener(new ActionListener() {
83+ public void actionPerformed(ActionEvent e) {
84+ String value = tc.getSelectedText();
85+ ;
86+ if (value != null && !value.isEmpty()){
87+ if (value != null && !value.isEmpty()){
88+ try {
89+ showURL("http://www.google.co.jp/search?q=" + URLEncoder.encode(value, "UTF-8"));
90+ } catch (UnsupportedEncodingException e1) {
91+ // TODO 自動生成された catch ブロック
92+ e1.printStackTrace();
93+ }
94+ }
95+ }
96+ }
97+ });
98+ mi.setEnabled(bc);
99+ pmenu.add(mi);
100+
101+ JMenuItem mi2 = new JMenuItemWithShortcut("Syobocalで検索(B)");
102+ mi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, KeyEvent.CTRL_DOWN_MASK));
103+ mi2.addActionListener(new ActionListener() {
104+ public void actionPerformed(ActionEvent e) {
105+ String value = tc.getSelectedText();
106+ if (value != null && !value.isEmpty()){
107+ try {
108+ showURL("http://cal.syoboi.jp/find?kw=" + URLEncoder.encode(value, "UTF-8") + "&exec=%E6%A4%9C%E7%B4%A2");
109+ } catch (UnsupportedEncodingException e1) {
110+ // TODO 自動生成された catch ブロック
111+ e1.printStackTrace();
112+ }
113+ }
114+ }
115+ });
116+ mi2.setEnabled(bc);
117+ pmenu.add(mi2);
118+
66119 c.requestFocusInWindow();
67120 pmenu.show(c, x, y);
68121 }
69-
70- private void addMenu(JPopupMenu pmenu, String text, Action action, int mnemonic, KeyStroke ks) {
122+
123+ private void showURL(String url){
124+ Desktop desktop = Desktop.getDesktop();
125+ try {
126+ desktop.browse(new URI(url));
127+ } catch (IOException e1) {
128+ // TODO 自動生成された catch ブロック
129+ e1.printStackTrace();
130+ } catch (URISyntaxException e1) {
131+ // TODO 自動生成された catch ブロック
132+ e1.printStackTrace();
133+ }
134+ }
135+
136+ private void addMenu(JPopupMenu pmenu, String text, Action action, int mnemonic, KeyStroke ks, boolean enable) {
71137 if (action != null) {
72138 JMenuItem mi = pmenu.add(action);
73139 if (text != null) {
@@ -79,6 +145,8 @@ public class TextEditPopupMenu extends MouseAdapter {
79145 if (ks != null) {
80146 mi.setAccelerator(ks);
81147 }
148+
149+ mi.setEnabled(enable);
82150 }
83151 }
84152 }
--- a/TinyBannavi/src/tainavi/VWFolderDialog.java
+++ b/TinyBannavi/src/tainavi/VWFolderDialog.java
@@ -53,7 +53,7 @@ public class VWFolderDialog extends JDialog {
5353
5454 private JPanel jPanel = null;
5555 private JLabel jLabel_folder = null;
56- private JTextField jTextField_folder = null;
56+ private JTextFieldWithPopup jTextField_folder = null;
5757 private JButton jButton_cancel = null;
5858 private JButton jButton_create = null;
5959
@@ -272,7 +272,7 @@ public class VWFolderDialog extends JDialog {
272272 //
273273 private JTextField getJTextField_folder() {
274274 if (jTextField_folder == null) {
275- jTextField_folder = new JTextField();
275+ jTextField_folder = new JTextFieldWithPopup();
276276 jTextField_folder.addActionListener(al_create);
277277 jTextField_folder.addKeyListener(kl_cancel);
278278 jTextField_folder.getDocument().addDocumentListener(dl_folderChanged);
--- a/TinyBannavi/src/tainavi/VersionInfo.java
+++ b/TinyBannavi/src/tainavi/VersionInfo.java
@@ -5,7 +5,7 @@ import java.util.regex.Pattern;
55
66
77 public class VersionInfo {
8- private static final String Version = "タイニー番組ナビゲータ for DBR-T2007 3.22.18β+1.13.6";
8+ private static final String Version = "タイニー番組ナビゲータ for DBR-T2007 3.22.18β+1.13.7";
99
1010 private static final String OSname = System.getProperty("os.name");
1111 private static final String OSvers = System.getProperty("os.version");
--- a/TinyBannavi/src/tainavi/Viewer.java
+++ b/TinyBannavi/src/tainavi/Viewer.java
@@ -6078,6 +6078,9 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener,H
60786078 final String BUTTON_ACTION_NEXT_CENTERPAGE = "nextcenterpage";
60796079 final String BUTTON_ACTION_PREV_CENTERPAGE = "prevcenterpage";
60806080
6081+ final String BUTTON_ACTION_NEXT_DATE_INDEX = "nextdateindex";
6082+ final String BUTTON_ACTION_PREV_DATE_INDEX = "prevdateindex";
6083+
60816084 final Action find_action = new AbstractAction() {
60826085 @Override
60836086 public void actionPerformed(ActionEvent e) {
@@ -6293,6 +6296,31 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener,H
62936296 }
62946297 };
62956298
6299+ final Action sc_prev_date_index = new AbstractAction() {
6300+ @Override
6301+ public void actionPerformed(ActionEvent e) {
6302+ switch(mainWindow.getSelectedTab()){
6303+ case PAPER:
6304+ paper.moveToPrevDateIndex();
6305+ break;
6306+ default:
6307+ break;
6308+ }
6309+ }
6310+ };
6311+ final Action sc_next_date_index = new AbstractAction() {
6312+ @Override
6313+ public void actionPerformed(ActionEvent e) {
6314+ switch(mainWindow.getSelectedTab()){
6315+ case PAPER:
6316+ paper.moveToNextDateIndex();
6317+ break;
6318+ default:
6319+ break;
6320+ }
6321+ }
6322+ };
6323+
62966324 ArrayList<ShortCut> sca = new ArrayList<ShortCut>();
62976325 sca.add(new ShortCut(FIND_ACTION, KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK, find_action));
62986326 sca.add(new ShortCut(FIND_ACTION, KeyEvent.VK_F1, 0, find_action));
@@ -6355,7 +6383,11 @@ public class Viewer extends JFrame implements ChangeListener,TickTimerListener,H
63556383
63566384 sca.add(new ShortCut(BUTTON_ACTION_PREV_CENTERPAGE, KeyEvent.VK_LEFT, KeyEvent.ALT_DOWN_MASK, sc_prev_centerpage));
63576385 sca.add(new ShortCut(BUTTON_ACTION_NEXT_CENTERPAGE, KeyEvent.VK_RIGHT, KeyEvent.ALT_DOWN_MASK, sc_next_centerpage));
6358-// sca.add(new ShortCut(SCROLL_ACTION_PREV_PAGE, KeyEvent.VK_PAGE_UP, 0, sc_prev_page));
6386+
6387+ sca.add(new ShortCut(BUTTON_ACTION_PREV_DATE_INDEX, KeyEvent.VK_LEFT, KeyEvent.SHIFT_DOWN_MASK + KeyEvent.ALT_DOWN_MASK, sc_prev_date_index));
6388+ sca.add(new ShortCut(BUTTON_ACTION_NEXT_DATE_INDEX, KeyEvent.VK_RIGHT, KeyEvent.SHIFT_DOWN_MASK + KeyEvent.ALT_DOWN_MASK, sc_next_date_index));
6389+
6390+ // sca.add(new ShortCut(SCROLL_ACTION_PREV_PAGE, KeyEvent.VK_PAGE_UP, 0, sc_prev_page));
63596391 // sca.add(new ShortCut(SCROLL_ACTION_NEXT_PAGE, KeyEvent.VK_PAGE_DOWN, 0, sc_next_page));
63606392 //
63616393 // sca.add(new ShortCut(SCROLL_ACTION_PREV_PAGE, KeyEvent.VK_PAGE_UP, KeyEvent.SHIFT_DOWN_MASK, sc_prev_page));