aboutsummaryrefslogtreecommitdiffstats
path: root/src/com/vaadin/ui/Table.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/vaadin/ui/Table.java')
-rw-r--r--src/com/vaadin/ui/Table.java75
1 files changed, 72 insertions, 3 deletions
diff --git a/src/com/vaadin/ui/Table.java b/src/com/vaadin/ui/Table.java
index 89f50f01ab..290aa1cf09 100644
--- a/src/com/vaadin/ui/Table.java
+++ b/src/com/vaadin/ui/Table.java
@@ -2117,6 +2117,9 @@ public class Table extends AbstractSelect implements Action.Container,
idsTemp[i] = columnIdMap.get(ids[i].toString());
}
setColumnOrder(idsTemp);
+ if (hasListeners(ColumnReorderEvent.class)) {
+ fireEvent(new ColumnReorderEvent(this));
+ }
} catch (final Exception e) {
// FIXME: Handle exception
logger.log(Level.FINER,
@@ -3850,7 +3853,7 @@ public class Table extends AbstractSelect implements Action.Container,
new Class[] { HeaderClickEvent.class });
} catch (final java.lang.NoSuchMethodException e) {
// This should never happen
- throw new java.lang.RuntimeException();
+ throw new java.lang.RuntimeException(e);
}
}
@@ -3890,7 +3893,7 @@ public class Table extends AbstractSelect implements Action.Container,
new Class[] { FooterClickEvent.class });
} catch (final java.lang.NoSuchMethodException e) {
// This should never happen
- throw new java.lang.RuntimeException();
+ throw new java.lang.RuntimeException(e);
}
}
@@ -4081,7 +4084,7 @@ public class Table extends AbstractSelect implements Action.Container,
new Class[] { ColumnResizeEvent.class });
} catch (final java.lang.NoSuchMethodException e) {
// This should never happen
- throw new java.lang.RuntimeException();
+ throw new java.lang.RuntimeException(e);
}
}
@@ -4176,4 +4179,70 @@ public class Table extends AbstractSelect implements Action.Container,
removeListener(VScrollTable.COLUMN_RESIZE_EVENT_ID,
ColumnResizeEvent.class, listener);
}
+
+ /**
+ * This event is fired when a columns are reordered by the end user user.
+ */
+ public static class ColumnReorderEvent extends Component.Event {
+ public static final Method METHOD;
+
+ static {
+ try {
+ METHOD = ColumnReorderListener.class.getDeclaredMethod(
+ "columnReorder",
+ new Class[] { ColumnReorderEvent.class });
+ } catch (final java.lang.NoSuchMethodException e) {
+ // This should never happen
+ throw new java.lang.RuntimeException(e);
+ }
+ }
+
+ /**
+ * Constructor
+ *
+ * @param source
+ * The source of the event
+ */
+ public ColumnReorderEvent(Component source) {
+ super(source);
+ }
+
+ }
+
+ /**
+ * Interface for listening to column reorder events.
+ */
+ public interface ColumnReorderListener extends Serializable {
+
+ /**
+ * This method is triggered when the column has been reordered
+ *
+ * @param event
+ */
+ public void columnReorder(ColumnReorderEvent event);
+ }
+
+ /**
+ * Adds a column reorder listener to the Table. A column reorder listener is
+ * called when a user reorders columns.
+ *
+ * @param listener
+ * The listener to attach to the Table
+ */
+ public void addListener(ColumnReorderListener listener) {
+ addListener(VScrollTable.COLUMN_REORDER_EVENT_ID,
+ ColumnReorderEvent.class, listener, ColumnReorderEvent.METHOD);
+ }
+
+ /**
+ * Removes a column reorder listener from the Table.
+ *
+ * @param listener
+ * The listener to remove
+ */
+ public void removeListener(ColumnReorderListener listener) {
+ removeListener(VScrollTable.COLUMN_REORDER_EVENT_ID,
+ ColumnReorderEvent.class, listener);
+ }
+
}