Browse Source

#4515 and #4516: header and footer click listeners instead of handlers

svn changeset:14115/svn branch:6.4
tags/6.7.0.beta1
Henri Sara 14 years ago
parent
commit
080cf798fa

WebContent/VAADIN/themes/sampler/icons/sampleicons/75-TableClickHandlers.gif → WebContent/VAADIN/themes/sampler/icons/sampleicons/75-TableClickListeners.gif View File


+ 43
- 90
src/com/vaadin/ui/Table.java View File

@@ -382,10 +382,6 @@ public class Table extends AbstractSelect implements Action.Container,

private MultiSelectMode multiSelectMode = MultiSelectMode.DEFAULT;

private HeaderClickHandler headerClickHandler;

private FooterClickHandler footerClickHandler;

/* Table constructors */

/**
@@ -3761,8 +3757,8 @@ public class Table extends AbstractSelect implements Action.Container,
static {
try {
// Set the header click method
HEADER_CLICK_METHOD = HeaderClickHandler.class
.getDeclaredMethod("handleHeaderClick",
HEADER_CLICK_METHOD = HeaderClickListener.class
.getDeclaredMethod("headerClick",
new Class[] { HeaderClickEvent.class });
} catch (final java.lang.NoSuchMethodException e) {
// This should never happen
@@ -3801,8 +3797,8 @@ public class Table extends AbstractSelect implements Action.Container,
static {
try {
// Set the header click method
FOOTER_CLICK_METHOD = FooterClickHandler.class
.getDeclaredMethod("handleFooterClick",
FOOTER_CLICK_METHOD = FooterClickListener.class
.getDeclaredMethod("footerClick",
new Class[] { FooterClickEvent.class });
} catch (final java.lang.NoSuchMethodException e) {
// This should never happen
@@ -3840,11 +3836,10 @@ public class Table extends AbstractSelect implements Action.Container,
}

/**
* Interface for the handler listening to column header mouse click events.
* The handleHeaderClick method is called when the user presses a header
* column cell.
* Interface for the listener for column header mouse click events. The
* headerClick method is called when the user presses a header column cell.
*/
public interface HeaderClickHandler extends Serializable {
public interface HeaderClickListener extends Serializable {

/**
* Called when a user clicks a header column cell
@@ -3853,15 +3848,14 @@ public class Table extends AbstractSelect implements Action.Container,
* The event which contains information about the column and
* the mouse click event
*/
public void handleHeaderClick(HeaderClickEvent event);
public void headerClick(HeaderClickEvent event);
}

/**
* Interface for the handler listening to column footer mouse click events.
* The handleHeaderClick method is called when the user presses a footer
* column cell.
* Interface for the listener for column footer mouse click events. The
* footerClick method is called when the user presses a footer column cell.
*/
public interface FooterClickHandler extends Serializable {
public interface FooterClickListener extends Serializable {

/**
* Called when a user clicks a footer column cell
@@ -3870,102 +3864,61 @@ public class Table extends AbstractSelect implements Action.Container,
* The event which contains information about the column and
* the mouse click event
*/
public void handleFooterClick(FooterClickEvent event);
public void footerClick(FooterClickEvent event);
}

/**
* Sets the header click handler which handles the click events when the
* user clicks on a column header cell in the Table.
* Adds a header click listener which handles the click events when the user
* clicks on a column header cell in the Table.
* <p>
* The handler will receive events which contains information about which
* The listener will receive events which contain information about which
* column was clicked and some details about the mouse event.
* </p>
*
* @param handler
* @param listener
* The handler which should handle the header click events.
*/
public void setHeaderClickHandler(HeaderClickHandler handler) {
if (headerClickHandler != handler) {
if (handler == null && headerClickHandler != null) {
// Remove header click handler
removeListener(VScrollTable.HEADER_CLICK_EVENT_ID,
HeaderClickEvent.class, headerClickHandler);

headerClickHandler = handler;
} else if (headerClickHandler != null) {
// Replace header click handler
removeListener(VScrollTable.HEADER_CLICK_EVENT_ID,
HeaderClickEvent.class, headerClickHandler);

headerClickHandler = handler;

addListener(VScrollTable.HEADER_CLICK_EVENT_ID,
HeaderClickEvent.class, headerClickHandler,
HeaderClickEvent.HEADER_CLICK_METHOD);
} else if (handler != null) {
// Set a new header click handler
headerClickHandler = handler;
addListener(VScrollTable.HEADER_CLICK_EVENT_ID,
HeaderClickEvent.class, headerClickHandler,
HeaderClickEvent.HEADER_CLICK_METHOD);
}
}
public void addListener(HeaderClickListener listener) {
addListener(VScrollTable.HEADER_CLICK_EVENT_ID, HeaderClickEvent.class,
listener, HeaderClickEvent.HEADER_CLICK_METHOD);
}

/**
* Sets the footer click handler which handles the click events when the
* user clicks on a column footer cell in the Table.
* <p>
* The handler will recieve events which contains information about which
* column was clicked and some details about the mouse event.
* </p>
* Removes a header click listener
*
* @param handler
* The handler which should handle the footer click events
*/
public void setFooterClickHandler(FooterClickHandler handler) {
if (footerClickHandler != handler) {
if (handler == null && footerClickHandler != null) {
// Remove header click handler
removeListener(VScrollTable.FOOTER_CLICK_EVENT_ID,
FooterClickEvent.class, footerClickHandler);
footerClickHandler = handler;
} else if (footerClickHandler != null) {
// Replace footer click handler
removeListener(VScrollTable.FOOTER_CLICK_EVENT_ID,
FooterClickEvent.class, footerClickHandler);
footerClickHandler = handler;
addListener(VScrollTable.FOOTER_CLICK_EVENT_ID,
FooterClickEvent.class, footerClickHandler,
FooterClickEvent.FOOTER_CLICK_METHOD);
} else if (handler != null) {
// Set a new footer click handler
footerClickHandler = handler;
addListener(VScrollTable.FOOTER_CLICK_EVENT_ID,
FooterClickEvent.class, footerClickHandler,
FooterClickEvent.FOOTER_CLICK_METHOD);
}
}
* @param listener
* The listener to remove.
*/
public void removeListener(HeaderClickListener listener) {
removeListener(VScrollTable.HEADER_CLICK_EVENT_ID,
HeaderClickEvent.class, listener);
}

/**
* Returns the header click handler which receives click events from the
* columns header cells when they are clicked on.
* Adds a footer click listener which handles the click events when the user
* clicks on a column footer cell in the Table.
* <p>
* The listener will receive events which contain information about which
* column was clicked and some details about the mouse event.
* </p>
*
* @return
* @param listener
* The handler which should handle the footer click events.
*/
public HeaderClickHandler getHeaderClickHandler() {
return headerClickHandler;
public void addListener(FooterClickListener listener) {
addListener(VScrollTable.FOOTER_CLICK_EVENT_ID, FooterClickEvent.class,
listener, FooterClickEvent.FOOTER_CLICK_METHOD);
}

/**
* Returns the footer click handler which recieves click events from the
* columns footer cells when they are clicked on.
* Removes a footer click listener
*
* @return
* @param listener
* The listener to remove.
*/
public FooterClickHandler getFooterClickHandler() {
return footerClickHandler;
public void removeListener(FooterClickListener listener) {
removeListener(VScrollTable.FOOTER_CLICK_EVENT_ID,
FooterClickEvent.class, listener);
}

/**

+ 3
- 3
tests/src/com/vaadin/tests/components/table/FooterClick.java View File

@@ -35,9 +35,9 @@ public class FooterClick extends TestBase {
final TextField columnField = new TextField(
"ProperyId of clicked column");

// Set the footer click handler
table.setFooterClickHandler(new Table.FooterClickHandler() {
public void handleFooterClick(FooterClickEvent event) {
// Add a footer click listener
table.addListener(new Table.FooterClickListener() {
public void footerClick(FooterClickEvent event) {
columnField.setValue(event.getPropertyId());
}
});

+ 4
- 4
tests/src/com/vaadin/tests/components/table/HeaderClick.java View File

@@ -26,9 +26,9 @@ public class HeaderClick extends TestBase {
final TextField columnField = new TextField(
"ProperyId of clicked column");

// Add header click handler
table.setHeaderClickHandler(new Table.HeaderClickHandler() {
public void handleHeaderClick(HeaderClickEvent event) {
// Add a header click listener
table.addListener(new Table.HeaderClickListener() {
public void headerClick(HeaderClickEvent event) {
columnField.setValue(event.getPropertyId());
}
});
@@ -75,7 +75,7 @@ public class HeaderClick extends TestBase {

@Override
protected String getDescription() {
return "Tests the header click handler";
return "Tests the header click listener";
}

@Override

+ 0
- 83
tests/src/com/vaadin/tests/server/component/table/TestFooterClickHandlers.java View File

@@ -1,83 +0,0 @@
package com.vaadin.tests.server.component.table;

import junit.framework.TestCase;

import com.vaadin.ui.Table;
import com.vaadin.ui.Table.FooterClickEvent;
import com.vaadin.ui.Table.FooterClickHandler;

/**
* Tests the footer click handler
*/
public class TestFooterClickHandlers extends TestCase {

/**
* Tests setting the click handler
*/
public void testAddingClickHandler() {
final Table table = new Table();

// Create click handler
FooterClickHandler handler = new FooterClickHandler() {
public void handleFooterClick(FooterClickEvent event) {
}
};

// No predefined footer click listeners should be present
assertNull(table.getFooterClickHandler());

// Set the click handler
table.setFooterClickHandler(handler);
assertEquals(handler, table.getFooterClickHandler());
}

/**
* Tests changing the click handler to another one
*/
public void testChangingClickHandler() {
final Table table = new Table();

// Create 2 click handlers
FooterClickHandler handler1 = new FooterClickHandler() {
public void handleFooterClick(FooterClickEvent event) {
}
};

FooterClickHandler handler2 = new FooterClickHandler() {
public void handleFooterClick(FooterClickEvent event) {
}
};

// Set the click handler
table.setFooterClickHandler(handler1);
assertEquals(handler1, table.getFooterClickHandler());

// Change the click handler to another one
table.setFooterClickHandler(handler2);
assertEquals(handler2, table.getFooterClickHandler());
}

/**
* Tests if click handler is removed
*/
public void testRemovingClickHandler() {
final Table table = new Table();

// Create click handler
FooterClickHandler handler = new FooterClickHandler() {
public void handleFooterClick(FooterClickEvent event) {
}
};

// No predefined footer click listeners should be present
assertNull(table.getFooterClickHandler());

// Set the click handler
table.setFooterClickHandler(handler);
assertEquals(handler, table.getFooterClickHandler());

// Remove the click handler
table.setFooterClickHandler(null);
assertNull(table.getFooterClickHandler());
}
}

+ 0
- 83
tests/src/com/vaadin/tests/server/component/table/TestHeaderClickHandlers.java View File

@@ -1,83 +0,0 @@
package com.vaadin.tests.server.component.table;

import junit.framework.TestCase;

import com.vaadin.ui.Table;
import com.vaadin.ui.Table.HeaderClickEvent;
import com.vaadin.ui.Table.HeaderClickHandler;

/**
* Tests the header click handler
*/
public class TestHeaderClickHandlers extends TestCase {

/**
* Tests setting the click handler
*/
public void testAddingClickHandler() {
final Table table = new Table();

// Create click handler
HeaderClickHandler handler = new HeaderClickHandler() {
public void handleHeaderClick(HeaderClickEvent event) {
}
};

// No predefined header click listeners should be present
assertNull(table.getHeaderClickHandler());

// Set the click handler
table.setHeaderClickHandler(handler);
assertEquals(handler, table.getHeaderClickHandler());
}

/**
* Tests changing the click handler to another one
*/
public void testChangingClickHandler() {
final Table table = new Table();

// Create 2 click handlers
HeaderClickHandler handler1 = new HeaderClickHandler() {
public void handleHeaderClick(HeaderClickEvent event) {
}
};

HeaderClickHandler handler2 = new HeaderClickHandler() {
public void handleHeaderClick(HeaderClickEvent event) {
}
};

// Set the click handler
table.setHeaderClickHandler(handler1);
assertEquals(handler1, table.getHeaderClickHandler());

// Change the click handler to another one
table.setHeaderClickHandler(handler2);
assertEquals(handler2, table.getHeaderClickHandler());
}

/**
* Tests if click handler is removed
*/
public void testRemovingClickHandler() {
final Table table = new Table();

// Create click handler
HeaderClickHandler handler = new HeaderClickHandler() {
public void handleHeaderClick(HeaderClickEvent event) {
}
};

// No predefined header click listeners should be present
assertNull(table.getHeaderClickHandler());

// Set the click handler
table.setHeaderClickHandler(handler);
assertEquals(handler, table.getHeaderClickHandler());

// Remove the click handler
table.setHeaderClickHandler(null);
assertNull(table.getHeaderClickHandler());
}
}

Loading…
Cancel
Save