home *** CD-ROM | disk | FTP | other *** search
- package jclass.table;
-
- import java.awt.Event;
- import java.awt.Point;
- import java.util.Vector;
- import jclass.util.JCVector;
-
- class SelectAction extends Action {
- private static final int DISALLOWED = -1000;
- private static final int TOGGLE = -1001;
- private static final int SELECT = 1;
- private static final int DESELECT = 2;
- static long last_time;
-
- private static void callCallback(JCTable var0, boolean var1, int var2, Event var3, JCSelectEvent var4) {
- JCVector var5 = var0.selectListeners;
- if (((Vector)var5).size() != 0) {
- if (var3.id == 501 && var3.when - last_time > 0L && var3.when - last_time < 250L) {
- ++var3.clickCount;
- }
-
- last_time = var3.when;
- var4.state_change = var2;
- var4.event = var3;
-
- for(int var6 = 0; var6 < ((Vector)var5).size(); ++var6) {
- if (var1) {
- ((JCSelectListener)((Vector)var5).elementAt(var6)).selectBegin(var4);
- } else {
- ((JCSelectListener)((Vector)var5).elementAt(var6)).selectEnd(var4);
- }
- }
-
- }
- }
-
- private static void exit(JCTable var0, String var1, String var2, Event var3, JCSelectEvent var4) {
- if (var1.equals("END") || var2.equals("CURRENT") || var2.equals("PREVROW") || var2.equals("NEXTROW")) {
- Select.cleanup(var0);
- callCallback(var0, false, var4.state_change, var3, var4);
- }
-
- }
-
- private static boolean IS_LISTMODE(JCTable var0) {
- return var0.mode == 1;
- }
-
- static boolean select(Event var0, String var1) {
- if (var0 != null && !Action.check_widget(var0)) {
- return false;
- } else if (!Action.table.isJCTable) {
- return false;
- } else {
- JCTable var2 = (JCTable)Action.table;
- if (!var2.allow_select) {
- var2.allow_select = true;
- var2.select_last_row = -1000;
- return false;
- } else if (!Action.table.repaint) {
- return false;
- } else if (var1.equals("CANCEL")) {
- Select.deselectAll(var2);
- return false;
- } else if (Action.table.resize_row == -999 && Action.table.resize_column == -999) {
- if (var2.selection_policy == 0) {
- return false;
- } else {
- int var3 = -999;
- int var4 = -999;
- String var7 = new String(var1);
- if (var1.equals("CURRENT")) {
- var3 = var2.edit_row;
- var4 = var2.edit_column;
- var1 = "START";
- } else {
- if ((var1.equals("EXTEND") || var1.equals("END")) && var2.select_last_row == -1000) {
- return false;
- }
-
- if (!var1.equals("NEXTROW") && !var1.equals("PREVROW")) {
- Point var11;
- if ((var11 = Action.eventToXY(var0)) == null) {
- return false;
- }
-
- JCCellPosition var13;
- if ((var13 = Action.XYtoCell(true, false, var11)) == null && !var1.equals("END")) {
- return false;
- }
-
- if (var13 != null) {
- var3 = var13.row;
- var4 = var13.column;
- }
- } else {
- int var8 = Action.table.rows;
- int var9 = -1;
- if (Action.table.rows == 0) {
- return false;
- }
-
- if (var2.selected_cells.size() > 0) {
- for(int var5 = 0; var5 < var2.selected_cells.size(); ++var5) {
- JCCellRange var10 = (JCCellRange)var2.selected_cells.elementAt(var5);
- var8 = Math.min(var8, var10.start_row);
- var9 = Math.max(var9, var10.end_row);
- }
- }
-
- if (var1.equals("PREVROW")) {
- if (var8 == 0) {
- return false;
- }
-
- var3 = var8 - 1;
- } else if (var1.equals("NEXTROW")) {
- if (var9 == Action.table.rows - 1) {
- return false;
- }
-
- var3 = var9 + 1;
- }
-
- var4 = -998;
- var1 = "START";
- }
- }
-
- int var6;
- JCSelectEvent var12;
- label306: {
- label307: {
- label266: {
- label265: {
- var6 = var2.selection_policy;
- var12 = new JCSelectEvent(Action.table, var0, var3, var4, var1);
- boolean var10000;
- if (var3 == -1) {
- if (var4 >= 0) {
- break label265;
- }
-
- var10000 = false;
- } else {
- if (var4 != -1) {
- break label266;
- }
-
- if (var3 >= 0) {
- break label265;
- }
-
- var10000 = false;
- }
-
- if (!var10000) {
- break label266;
- }
- }
-
- if (var3 == -1) {
- break label307;
- }
- }
-
- label251: {
- boolean var14;
- if (var3 == -1) {
- if (var4 >= 0) {
- break label251;
- }
-
- var14 = false;
- } else {
- if (var4 != -1) {
- break label306;
- }
-
- if (var3 >= 0) {
- break label251;
- }
-
- var14 = false;
- }
-
- if (!var14) {
- break label306;
- }
- }
-
- if (var4 != -1 || var2.mode == 1) {
- break label306;
- }
- }
-
- if ((var6 == 1 || var2.mode == 1) && var2.mode == 1) {
- if (var1.equals("START")) {
- callCallback(var2, true, 1, var0, var12);
- } else if (var1.equals("END")) {
- exit(var2, var1, var7, var0, var12);
- return true;
- }
- }
- }
-
- if (var2.mode == 1 && var3 != -1) {
- var4 = -998;
- var12.column = -998;
- }
-
- if (var1.equals("START") || var1.equals("ADD") && var6 == 3 || var1.equals("EXTEND") && var2.mode == 1 && var6 == 1) {
- if (var1.equals("EXTEND") && (var3 == var2.select_last_row || var2.select_start_row == -1001)) {
- return false;
- }
-
- callCallback(var2, true, 1, var0, var12);
- if (!var12.doit) {
- var2.allow_select = false;
- return false;
- }
-
- if (!Action.table.makeVisible(var3, var4)) {
- return false;
- }
-
- if (var12.row == -998 || var12.row == -997) {
- var3 = -1;
- }
-
- if (var12.column == -998 || var12.column == -997) {
- var4 = -1;
- }
-
- if (var1.equals("START") || var6 == 1) {
- if (var2.mode == 1 && var6 == 1 && var3 == var2.select_last_row) {
- var2.select_start_row = -1001;
- var2.select_last_row = -999;
- return false;
- }
-
- callCallback(var2, true, 2, var0, var12);
- if (var12.doit) {
- Select.deselectAll(var2);
- }
- }
-
- if (var12.doit) {
- Select.createSelectedRange(var2, var3, var4);
- }
-
- var2.select_start_row = var2.select_last_row = var3;
- var2.select_start_column = var2.select_last_column = var4;
- } else if (var1.equals("EXTEND") && (var6 == 2 || var6 == 3)) {
- if (var2.selected_cells.size() == 0) {
- return false;
- }
-
- if (var3 == var2.select_last_row && var4 == var2.select_last_column) {
- return false;
- }
-
- if (!Action.table.makeVisible(var3, var4)) {
- return false;
- }
-
- var12.stage = 1;
- callCallback(var2, true, 1, var0, var12);
- if (!var12.doit) {
- return false;
- }
-
- if (var12.row == -998 || var12.row == -997) {
- var3 = -1;
- }
-
- if (var12.column == -998 || var12.column == -997) {
- var4 = -1;
- }
-
- Select.setSelectedRange(var2, var3, var4);
- var2.select_last_row = var3;
- var2.select_last_column = var4;
- if (var2.hasText() && var2.edit_row == var2.select_start_row && var2.edit_column == var2.select_start_column) {
- var2.text.select(0, 0);
- }
- }
-
- exit(var2, var1, var7, var0, var12);
- return true;
- }
- } else {
- return false;
- }
- }
- }
- }
-