home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VCafe / JCLASS.BIN / KLG.JAR / jclass / table / SelectAction.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-12-05  |  4.0 KB  |  298 lines

  1. package jclass.table;
  2.  
  3. import java.awt.Event;
  4. import java.awt.Point;
  5. import java.util.Vector;
  6. import jclass.util.JCVector;
  7.  
  8. class SelectAction extends Action {
  9.    private static final int DISALLOWED = -1000;
  10.    private static final int TOGGLE = -1001;
  11.    private static final int SELECT = 1;
  12.    private static final int DESELECT = 2;
  13.    static long last_time;
  14.  
  15.    private static void callCallback(JCTable var0, boolean var1, int var2, Event var3, JCSelectEvent var4) {
  16.       JCVector var5 = var0.selectListeners;
  17.       if (((Vector)var5).size() != 0) {
  18.          if (var3.id == 501 && var3.when - last_time > 0L && var3.when - last_time < 250L) {
  19.             ++var3.clickCount;
  20.          }
  21.  
  22.          last_time = var3.when;
  23.          var4.state_change = var2;
  24.          var4.event = var3;
  25.  
  26.          for(int var6 = 0; var6 < ((Vector)var5).size(); ++var6) {
  27.             if (var1) {
  28.                ((JCSelectListener)((Vector)var5).elementAt(var6)).selectBegin(var4);
  29.             } else {
  30.                ((JCSelectListener)((Vector)var5).elementAt(var6)).selectEnd(var4);
  31.             }
  32.          }
  33.  
  34.       }
  35.    }
  36.  
  37.    private static void exit(JCTable var0, String var1, String var2, Event var3, JCSelectEvent var4) {
  38.       if (var1.equals("END") || var2.equals("CURRENT") || var2.equals("PREVROW") || var2.equals("NEXTROW")) {
  39.          Select.cleanup(var0);
  40.          callCallback(var0, false, var4.state_change, var3, var4);
  41.       }
  42.  
  43.    }
  44.  
  45.    private static boolean IS_LISTMODE(JCTable var0) {
  46.       return var0.mode == 1;
  47.    }
  48.  
  49.    static boolean select(Event var0, String var1) {
  50.       if (var0 != null && !Action.check_widget(var0)) {
  51.          return false;
  52.       } else if (!Action.table.isJCTable) {
  53.          return false;
  54.       } else {
  55.          JCTable var2 = (JCTable)Action.table;
  56.          if (!var2.allow_select) {
  57.             var2.allow_select = true;
  58.             var2.select_last_row = -1000;
  59.             return false;
  60.          } else if (!Action.table.repaint) {
  61.             return false;
  62.          } else if (var1.equals("CANCEL")) {
  63.             Select.deselectAll(var2);
  64.             return false;
  65.          } else if (Action.table.resize_row == -999 && Action.table.resize_column == -999) {
  66.             if (var2.selection_policy == 0) {
  67.                return false;
  68.             } else {
  69.                int var3 = -999;
  70.                int var4 = -999;
  71.                String var7 = new String(var1);
  72.                if (var1.equals("CURRENT")) {
  73.                   var3 = var2.edit_row;
  74.                   var4 = var2.edit_column;
  75.                   var1 = "START";
  76.                } else {
  77.                   if ((var1.equals("EXTEND") || var1.equals("END")) && var2.select_last_row == -1000) {
  78.                      return false;
  79.                   }
  80.  
  81.                   if (!var1.equals("NEXTROW") && !var1.equals("PREVROW")) {
  82.                      Point var11;
  83.                      if ((var11 = Action.eventToXY(var0)) == null) {
  84.                         return false;
  85.                      }
  86.  
  87.                      JCCellPosition var13;
  88.                      if ((var13 = Action.XYtoCell(true, false, var11)) == null && !var1.equals("END")) {
  89.                         return false;
  90.                      }
  91.  
  92.                      if (var13 != null) {
  93.                         var3 = var13.row;
  94.                         var4 = var13.column;
  95.                      }
  96.                   } else {
  97.                      int var8 = Action.table.rows;
  98.                      int var9 = -1;
  99.                      if (Action.table.rows == 0) {
  100.                         return false;
  101.                      }
  102.  
  103.                      if (var2.selected_cells.size() > 0) {
  104.                         for(int var5 = 0; var5 < var2.selected_cells.size(); ++var5) {
  105.                            JCCellRange var10 = (JCCellRange)var2.selected_cells.elementAt(var5);
  106.                            var8 = Math.min(var8, var10.start_row);
  107.                            var9 = Math.max(var9, var10.end_row);
  108.                         }
  109.                      }
  110.  
  111.                      if (var1.equals("PREVROW")) {
  112.                         if (var8 == 0) {
  113.                            return false;
  114.                         }
  115.  
  116.                         var3 = var8 - 1;
  117.                      } else if (var1.equals("NEXTROW")) {
  118.                         if (var9 == Action.table.rows - 1) {
  119.                            return false;
  120.                         }
  121.  
  122.                         var3 = var9 + 1;
  123.                      }
  124.  
  125.                      var4 = -998;
  126.                      var1 = "START";
  127.                   }
  128.                }
  129.  
  130.                int var6;
  131.                JCSelectEvent var12;
  132.                label306: {
  133.                   label307: {
  134.                      label266: {
  135.                         label265: {
  136.                            var6 = var2.selection_policy;
  137.                            var12 = new JCSelectEvent(Action.table, var0, var3, var4, var1);
  138.                            boolean var10000;
  139.                            if (var3 == -1) {
  140.                               if (var4 >= 0) {
  141.                                  break label265;
  142.                               }
  143.  
  144.                               var10000 = false;
  145.                            } else {
  146.                               if (var4 != -1) {
  147.                                  break label266;
  148.                               }
  149.  
  150.                               if (var3 >= 0) {
  151.                                  break label265;
  152.                               }
  153.  
  154.                               var10000 = false;
  155.                            }
  156.  
  157.                            if (!var10000) {
  158.                               break label266;
  159.                            }
  160.                         }
  161.  
  162.                         if (var3 == -1) {
  163.                            break label307;
  164.                         }
  165.                      }
  166.  
  167.                      label251: {
  168.                         boolean var14;
  169.                         if (var3 == -1) {
  170.                            if (var4 >= 0) {
  171.                               break label251;
  172.                            }
  173.  
  174.                            var14 = false;
  175.                         } else {
  176.                            if (var4 != -1) {
  177.                               break label306;
  178.                            }
  179.  
  180.                            if (var3 >= 0) {
  181.                               break label251;
  182.                            }
  183.  
  184.                            var14 = false;
  185.                         }
  186.  
  187.                         if (!var14) {
  188.                            break label306;
  189.                         }
  190.                      }
  191.  
  192.                      if (var4 != -1 || var2.mode == 1) {
  193.                         break label306;
  194.                      }
  195.                   }
  196.  
  197.                   if ((var6 == 1 || var2.mode == 1) && var2.mode == 1) {
  198.                      if (var1.equals("START")) {
  199.                         callCallback(var2, true, 1, var0, var12);
  200.                      } else if (var1.equals("END")) {
  201.                         exit(var2, var1, var7, var0, var12);
  202.                         return true;
  203.                      }
  204.                   }
  205.                }
  206.  
  207.                if (var2.mode == 1 && var3 != -1) {
  208.                   var4 = -998;
  209.                   var12.column = -998;
  210.                }
  211.  
  212.                if (var1.equals("START") || var1.equals("ADD") && var6 == 3 || var1.equals("EXTEND") && var2.mode == 1 && var6 == 1) {
  213.                   if (var1.equals("EXTEND") && (var3 == var2.select_last_row || var2.select_start_row == -1001)) {
  214.                      return false;
  215.                   }
  216.  
  217.                   callCallback(var2, true, 1, var0, var12);
  218.                   if (!var12.doit) {
  219.                      var2.allow_select = false;
  220.                      return false;
  221.                   }
  222.  
  223.                   if (!Action.table.makeVisible(var3, var4)) {
  224.                      return false;
  225.                   }
  226.  
  227.                   if (var12.row == -998 || var12.row == -997) {
  228.                      var3 = -1;
  229.                   }
  230.  
  231.                   if (var12.column == -998 || var12.column == -997) {
  232.                      var4 = -1;
  233.                   }
  234.  
  235.                   if (var1.equals("START") || var6 == 1) {
  236.                      if (var2.mode == 1 && var6 == 1 && var3 == var2.select_last_row) {
  237.                         var2.select_start_row = -1001;
  238.                         var2.select_last_row = -999;
  239.                         return false;
  240.                      }
  241.  
  242.                      callCallback(var2, true, 2, var0, var12);
  243.                      if (var12.doit) {
  244.                         Select.deselectAll(var2);
  245.                      }
  246.                   }
  247.  
  248.                   if (var12.doit) {
  249.                      Select.createSelectedRange(var2, var3, var4);
  250.                   }
  251.  
  252.                   var2.select_start_row = var2.select_last_row = var3;
  253.                   var2.select_start_column = var2.select_last_column = var4;
  254.                } else if (var1.equals("EXTEND") && (var6 == 2 || var6 == 3)) {
  255.                   if (var2.selected_cells.size() == 0) {
  256.                      return false;
  257.                   }
  258.  
  259.                   if (var3 == var2.select_last_row && var4 == var2.select_last_column) {
  260.                      return false;
  261.                   }
  262.  
  263.                   if (!Action.table.makeVisible(var3, var4)) {
  264.                      return false;
  265.                   }
  266.  
  267.                   var12.stage = 1;
  268.                   callCallback(var2, true, 1, var0, var12);
  269.                   if (!var12.doit) {
  270.                      return false;
  271.                   }
  272.  
  273.                   if (var12.row == -998 || var12.row == -997) {
  274.                      var3 = -1;
  275.                   }
  276.  
  277.                   if (var12.column == -998 || var12.column == -997) {
  278.                      var4 = -1;
  279.                   }
  280.  
  281.                   Select.setSelectedRange(var2, var3, var4);
  282.                   var2.select_last_row = var3;
  283.                   var2.select_last_column = var4;
  284.                   if (var2.hasText() && var2.edit_row == var2.select_start_row && var2.edit_column == var2.select_start_column) {
  285.                      var2.text.select(0, 0);
  286.                   }
  287.                }
  288.  
  289.                exit(var2, var1, var7, var0, var12);
  290.                return true;
  291.             }
  292.          } else {
  293.             return false;
  294.          }
  295.       }
  296.    }
  297. }
  298.