123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668 |
- /*
- * Copyright 2000-2016 Vaadin Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
- package com.vaadin.v7.tests.components.grid.basicfeatures;
-
- import java.text.DecimalFormat;
- import java.text.DecimalFormatSymbols;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Locale;
- import java.util.Map;
- import java.util.Random;
-
- import com.vaadin.annotations.Theme;
- import com.vaadin.shared.data.sort.SortDirection;
- import com.vaadin.shared.ui.ContentMode;
- import com.vaadin.tests.components.AbstractComponentTest;
- import com.vaadin.ui.Button;
- import com.vaadin.ui.Button.ClickEvent;
- import com.vaadin.ui.Button.ClickListener;
- import com.vaadin.ui.Component;
- import com.vaadin.ui.CssLayout;
- import com.vaadin.ui.Label;
- import com.vaadin.ui.Notification;
- import com.vaadin.ui.Panel;
- import com.vaadin.v7.data.Container.Filter;
- import com.vaadin.v7.data.Item;
- import com.vaadin.v7.data.Property;
- import com.vaadin.v7.data.Property.ValueChangeEvent;
- import com.vaadin.v7.data.Property.ValueChangeListener;
- import com.vaadin.v7.data.fieldgroup.FieldGroup.CommitException;
- import com.vaadin.v7.data.sort.Sort;
- import com.vaadin.v7.data.sort.SortOrder;
- import com.vaadin.v7.data.util.IndexedContainer;
- import com.vaadin.v7.event.ItemClickEvent;
- import com.vaadin.v7.event.ItemClickEvent.ItemClickListener;
- import com.vaadin.v7.event.SelectionEvent;
- import com.vaadin.v7.event.SelectionEvent.SelectionListener;
- import com.vaadin.v7.event.SortEvent;
- import com.vaadin.v7.shared.ui.grid.ColumnResizeMode;
- import com.vaadin.v7.shared.ui.grid.GridStaticCellType;
- import com.vaadin.v7.shared.ui.grid.HeightMode;
- import com.vaadin.v7.ui.Field;
- import com.vaadin.v7.ui.Grid;
- import com.vaadin.v7.ui.Grid.CellDescriptionGenerator;
- import com.vaadin.v7.ui.Grid.CellReference;
- import com.vaadin.v7.ui.Grid.CellStyleGenerator;
- import com.vaadin.v7.ui.Grid.Column;
- import com.vaadin.v7.ui.Grid.ColumnReorderEvent;
- import com.vaadin.v7.ui.Grid.ColumnReorderListener;
- import com.vaadin.v7.ui.Grid.ColumnResizeEvent;
- import com.vaadin.v7.ui.Grid.ColumnResizeListener;
- import com.vaadin.v7.ui.Grid.ColumnVisibilityChangeEvent;
- import com.vaadin.v7.ui.Grid.ColumnVisibilityChangeListener;
- import com.vaadin.v7.ui.Grid.DetailsGenerator;
- import com.vaadin.v7.ui.Grid.FooterCell;
- import com.vaadin.v7.ui.Grid.HeaderCell;
- import com.vaadin.v7.ui.Grid.HeaderRow;
- import com.vaadin.v7.ui.Grid.MultiSelectionModel;
- import com.vaadin.v7.ui.Grid.RowDescriptionGenerator;
- import com.vaadin.v7.ui.Grid.RowReference;
- import com.vaadin.v7.ui.Grid.RowStyleGenerator;
- import com.vaadin.v7.ui.Grid.SelectionMode;
- import com.vaadin.v7.ui.Grid.SelectionModel;
- import com.vaadin.v7.ui.renderers.DateRenderer;
- import com.vaadin.v7.ui.renderers.HtmlRenderer;
- import com.vaadin.v7.ui.renderers.NumberRenderer;
-
- /**
- * Tests the basic features like columns, footers and headers
- *
- * @since
- * @author Vaadin Ltd
- */
- @Theme("valo")
- public class GridBasicFeatures extends AbstractComponentTest<Grid> {
-
- public static final String ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4 = "Row numbers for 3/4";
- public static final String ROW_STYLE_GENERATOR_NONE = "None";
- public static final String ROW_STYLE_GENERATOR_ROW_NUMBERS = "Row numbers";
- public static final String ROW_STYLE_GENERATOR_EMPTY = "Empty string";
- public static final String ROW_STYLE_GENERATOR_NULL = "Null";
- public static final String CELL_STYLE_GENERATOR_NONE = "None";
- public static final String CELL_STYLE_GENERATOR_PROPERTY_TO_STRING = "Property to string";
- public static final String CELL_STYLE_GENERATOR_SPECIAL = "Special for 1/4 Column 1";
- public static final String CELL_STYLE_GENERATOR_EMPTY = "Empty string";
- public static final String CELL_STYLE_GENERATOR_NULL = "Null";
- private static final int MANUALLY_FORMATTED_COLUMNS = 5;
- public static final int COLUMNS = 12;
- public static final int EDITABLE_COLUMNS = COLUMNS - 1;
- public static final int ROWS = 1000;
-
- private int containerDelay = 0;
-
- private boolean singleSelectAllowDeselect = true;
-
- private IndexedContainer ds;
- private Grid grid;
- private SelectionListener selectionListener = new SelectionListener() {
-
- @Override
- public void select(SelectionEvent event) {
- Iterator<Object> iter = event.getAdded().iterator();
- Object addedRow = iter.hasNext() ? iter.next() : "none";
- iter = event.getRemoved().iterator();
- Object removedRow = iter.hasNext() ? iter.next() : "none";
- log("SelectionEvent: Added " + addedRow + ", Removed "
- + removedRow);
- }
- };
-
- private ItemClickListener itemClickListener = new ItemClickListener() {
-
- @Override
- public void itemClick(ItemClickEvent event) {
- log("Item " + (event.isDoubleClick() ? "double " : "") + "click on "
- + event.getPropertyId() + ", item " + event.getItemId());
- }
- };
-
- private RowDescriptionGenerator rowDescriptionGenerator = new RowDescriptionGenerator() {
-
- @Override
- public String getDescription(RowReference row) {
- return "<b>Row</b> tooltip\n for row " + row.getItemId();
- }
- };
-
- private CellDescriptionGenerator cellDescriptionGenerator = new CellDescriptionGenerator() {
-
- @Override
- public String getDescription(CellReference cell) {
- if ("Column 0".equals(cell.getPropertyId())) {
- return "<b>Cell</b> tooltip\n for row " + cell.getItemId()
- + ", column 0";
- } else {
- return null;
- }
- }
- };
-
- private ItemClickListener editorOpeningItemClickListener = new ItemClickListener() {
-
- @Override
- public void itemClick(ItemClickEvent event) {
- grid.editItem(event.getItemId());
- }
- };
-
- private ValueChangeListener reactiveValueChanger = new ValueChangeListener() {
- @Override
- @SuppressWarnings("unchecked")
- public void valueChange(ValueChangeEvent event) {
- Object id = grid.getEditedItemId();
- grid.getContainerDataSource().getContainerProperty(id, "Column 2")
- .setValue("Modified");
- }
- };
-
- private ColumnReorderListener columnReorderListener = new ColumnReorderListener() {
-
- @Override
- public void columnReorder(ColumnReorderEvent event) {
- log("Columns reordered, userOriginated: "
- + event.isUserOriginated());
- }
- };
-
- private ColumnVisibilityChangeListener columnVisibilityListener = new ColumnVisibilityChangeListener() {
- @Override
- public void columnVisibilityChanged(ColumnVisibilityChangeEvent event) {
- log("Visibility changed: "//
- + "propertyId: " + event.getColumn().getPropertyId() //
- + ", isHidden: " + event.getColumn().isHidden() //
- + ", userOriginated: " + event.isUserOriginated());
- }
- };
-
- private final DetailsGenerator detailedDetailsGenerator = new DetailsGenerator() {
- @Override
- public Component getDetails(final RowReference rowReference) {
- CssLayout cssLayout = new CssLayout();
- cssLayout.setHeight("200px");
- cssLayout.setWidth("100%");
-
- Item item = rowReference.getItem();
- for (Object propertyId : item.getItemPropertyIds()) {
- Property<?> prop = item.getItemProperty(propertyId);
- String string = prop.getValue().toString();
- cssLayout.addComponent(new Label(string));
- }
-
- final int rowIndex = grid.getContainerDataSource()
- .indexOfId(rowReference.getItemId());
- ClickListener clickListener = new ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- Notification.show("You clicked on the "
- + "button in the details for " + "row " + rowIndex);
- }
- };
- cssLayout.addComponent(new Button("Press me", clickListener));
- return cssLayout;
- }
- };
-
- private final DetailsGenerator watchingDetailsGenerator = new DetailsGenerator() {
- private int id = 0;
-
- @Override
- public Component getDetails(RowReference rowReference) {
- return new Label("You are watching item id "
- + rowReference.getItemId() + " (" + id++ + ")");
- }
- };
-
- private Map<Object, Panel> detailsMap = new HashMap<>();
-
- private final DetailsGenerator persistingDetailsGenerator = new DetailsGenerator() {
-
- @Override
- public Component getDetails(RowReference rowReference) {
- Object itemId = rowReference.getItemId();
- if (!detailsMap.containsKey(itemId)) {
-
- Panel panel = new Panel();
- panel.setContent(new Label("One"));
- detailsMap.put(itemId, panel);
- }
- return detailsMap.get(itemId);
- }
- };
-
- @Override
- @SuppressWarnings("unchecked")
- protected Grid constructComponent() {
-
- // Build data source
- ds = new IndexedContainer() {
- @Override
- public List<Object> getItemIds(int startIndex, int numberOfIds) {
- log("Requested items " + startIndex + " - "
- + (startIndex + numberOfIds));
- if (containerDelay > 0) {
- try {
- Thread.sleep(containerDelay);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- return super.getItemIds(startIndex, numberOfIds);
- }
- };
-
- {
- int col = 0;
- for (; col < COLUMNS - MANUALLY_FORMATTED_COLUMNS; col++) {
- ds.addContainerProperty(getColumnProperty(col), String.class,
- "");
- }
-
- ds.addContainerProperty(getColumnProperty(col++), Integer.class,
- Integer.valueOf(0));
- ds.addContainerProperty(getColumnProperty(col++), Date.class,
- new Date());
- ds.addContainerProperty(getColumnProperty(col++), String.class, "");
-
- // Random numbers
- ds.addContainerProperty(getColumnProperty(col++), Integer.class, 0);
- ds.addContainerProperty(getColumnProperty(col++), Integer.class, 0);
-
- }
-
- {
- Random rand = new Random();
- rand.setSeed(13334);
- long timestamp = 0;
- for (int row = 0; row < ROWS; row++) {
- Item item = ds.addItem(Integer.valueOf(row));
- int col = 0;
- for (; col < COLUMNS - MANUALLY_FORMATTED_COLUMNS; col++) {
- item.getItemProperty(getColumnProperty(col))
- .setValue("(" + row + ", " + col + ")");
- }
- item.getItemProperty(getColumnProperty(1)).setReadOnly(true);
-
- item.getItemProperty(getColumnProperty(col++))
- .setValue(Integer.valueOf(row));
- item.getItemProperty(getColumnProperty(col++))
- .setValue(new Date(timestamp));
- // a bit over a day, just to get variation
- timestamp += 91250000;
- item.getItemProperty(getColumnProperty(col++))
- .setValue("<b>" + row + "</b>");
-
- // Random numbers
- item.getItemProperty(getColumnProperty(col++))
- .setValue(rand.nextInt());
- // Random between 0 - 5 to test multisorting
- item.getItemProperty(getColumnProperty(col++))
- .setValue(rand.nextInt(5));
- }
- }
-
- // Create grid
- Grid grid = new Grid(ds);
-
- {
- int col = grid.getContainerDataSource().getContainerPropertyIds()
- .size() - MANUALLY_FORMATTED_COLUMNS;
- grid.getColumn(getColumnProperty(col++))
- .setRenderer(new NumberRenderer(
- new DecimalFormat("0,000.00", DecimalFormatSymbols
- .getInstance(new Locale("fi", "FI")))));
-
- grid.getColumn(getColumnProperty(col++)).setRenderer(
- new DateRenderer(new SimpleDateFormat("dd.MM.yy HH:mm")));
- grid.getColumn(getColumnProperty(col++))
- .setRenderer(new HtmlRenderer());
- grid.getColumn(getColumnProperty(col++))
- .setRenderer(new NumberRenderer());
- grid.getColumn(getColumnProperty(col++))
- .setRenderer(new NumberRenderer());
- }
-
- // Create footer
- grid.appendFooterRow();
- grid.setFooterVisible(false);
-
- // Add footer values (header values are automatically created)
- for (int col = 0; col < COLUMNS; col++) {
- grid.getFooterRow(0).getCell(getColumnProperty(col))
- .setText("Footer " + col);
- }
-
- // Set varying column widths
- for (int col = 0; col < COLUMNS; col++) {
- Column column = grid.getColumn(getColumnProperty(col));
- column.setWidth(100 + col * 50);
- column.setHidable(isColumnHidableByDefault(col));
- }
-
- grid.addSortListener(new SortEvent.SortListener() {
-
- @Override
- public void sort(SortEvent event) {
- log("SortEvent: isUserOriginated? " + event.isUserOriginated());
- }
- });
-
- grid.addColumnResizeListener(new ColumnResizeListener() {
- @Override
- public void columnResize(ColumnResizeEvent event) {
- log("ColumnResizeEvent: isUserOriginated? "
- + event.isUserOriginated());
- }
- });
-
- grid.setSelectionMode(SelectionMode.NONE);
-
- grid.getColumn(getColumnProperty(2)).getEditorField().setReadOnly(true);
- grid.getColumn(getColumnProperty(3)).setEditable(false);
-
- createGridActions();
-
- createColumnActions();
-
- createPropertyActions();
-
- createHeaderActions();
-
- createFooterActions();
-
- createRowActions();
-
- createEditorActions();
-
- addHeightActions();
-
- addFilterActions();
-
- addInternalActions();
-
- createDetailsActions();
-
- this.grid = grid;
- return grid;
- }
-
- protected boolean isColumnHidableByDefault(int col) {
- return false;
- }
-
- protected boolean isColumnHiddenByDefault(int col) {
- return false;
- }
-
- private void addInternalActions() {
- createClickAction("Update column order without updating client",
- "Internals", new Command<Grid, Void>() {
- @Override
- public void execute(Grid grid, Void value, Object data) {
- List<Column> columns = grid.getColumns();
- grid.setColumnOrder(columns.get(1).getPropertyId(),
- columns.get(0).getPropertyId());
- grid.getUI().getConnectorTracker().markClean(grid);
- }
- }, null);
- }
-
- private void addFilterActions() {
- createBooleanAction("Column 1 starts with \"(23\"", "Filter", false,
- new Command<Grid, Boolean>() {
- Filter filter = new Filter() {
- @Override
- public boolean passesFilter(Object itemId, Item item) {
- return item.getItemProperty("Column 1").getValue()
- .toString().startsWith("(23");
- }
-
- @Override
- public boolean appliesToProperty(Object propertyId) {
- return propertyId.equals("Column 1");
- }
- };
-
- @Override
- public void execute(Grid grid, Boolean value, Object data) {
- if (value) {
- ds.addContainerFilter(filter);
- } else {
- ds.removeContainerFilter(filter);
- }
- }
- });
-
- createBooleanAction("Impassable filter", "Filter", false,
- new Command<Grid, Boolean>() {
- Filter filter = new Filter() {
- @Override
- public boolean passesFilter(Object itemId, Item item) {
- return false;
- }
-
- @Override
- public boolean appliesToProperty(Object propertyId) {
- return true;
- }
- };
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- if (value) {
- ds.addContainerFilter(filter);
- } else {
- ds.removeContainerFilter(filter);
- }
- }
- });
- }
-
- protected void createGridActions() {
-
- LinkedHashMap<String, String> primaryStyleNames = new LinkedHashMap<>();
- primaryStyleNames.put("v-grid", "v-grid");
- primaryStyleNames.put("v-escalator", "v-escalator");
- primaryStyleNames.put("my-grid", "my-grid");
-
- createMultiClickAction("Primary style name", "State", primaryStyleNames,
- new Command<Grid, String>() {
-
- @Override
- public void execute(Grid grid, String value, Object data) {
- grid.setPrimaryStyleName(value);
-
- }
- }, primaryStyleNames.get("v-grid"));
-
- LinkedHashMap<String, SelectionMode> selectionModes = new LinkedHashMap<>();
- selectionModes.put("single", SelectionMode.SINGLE);
- selectionModes.put("multi", SelectionMode.MULTI);
- selectionModes.put("none", SelectionMode.NONE);
- createSelectAction("Selection mode", "State", selectionModes, "none",
- new Command<Grid, Grid.SelectionMode>() {
- @Override
- public void execute(Grid grid, SelectionMode selectionMode,
- Object data) {
- grid.setSelectionMode(selectionMode);
- if (selectionMode == SelectionMode.SINGLE) {
- grid.addSelectionListener(selectionListener);
-
- ((SelectionModel.Single) grid.getSelectionModel())
- .setDeselectAllowed(
- singleSelectAllowDeselect);
- } else {
- grid.removeSelectionListener(selectionListener);
- }
- }
- });
-
- LinkedHashMap<String, Integer> selectionLimits = new LinkedHashMap<>();
- selectionLimits.put("2", Integer.valueOf(2));
- selectionLimits.put("1000", Integer.valueOf(1000));
- selectionLimits.put("Integer.MAX_VALUE",
- Integer.valueOf(Integer.MAX_VALUE));
- createSelectAction("Selection limit", "State", selectionLimits, "1000",
- new Command<Grid, Integer>() {
- @Override
- public void execute(Grid grid, Integer limit, Object data) {
- if (!(grid
- .getSelectionModel() instanceof MultiSelectionModel)) {
- grid.setSelectionMode(SelectionMode.MULTI);
- }
-
- ((MultiSelectionModel) grid.getSelectionModel())
- .setSelectionLimit(limit.intValue());
- }
- });
-
- LinkedHashMap<String, List<SortOrder>> sortableProperties = new LinkedHashMap<>();
- for (Object propertyId : ds.getSortableContainerPropertyIds()) {
- sortableProperties.put(propertyId + ", ASC",
- Sort.by(propertyId).build());
- sortableProperties.put(propertyId + ", DESC",
- Sort.by(propertyId, SortDirection.DESCENDING).build());
- }
- createSelectAction("Sort by column", "State", sortableProperties,
- "Column 9, ascending", new Command<Grid, List<SortOrder>>() {
- @Override
- public void execute(Grid grid, List<SortOrder> sortOrder,
- Object data) {
- grid.setSortOrder(sortOrder);
- }
- });
-
- createBooleanAction("Reverse Grid Columns", "State", false,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- List<Object> ids = new ArrayList<>();
- ids.addAll(ds.getContainerPropertyIds());
- if (!value) {
- c.setColumnOrder(ids.toArray());
- } else {
- Object[] idsArray = new Object[ids.size()];
- for (int i = 0; i < ids.size(); ++i) {
- idsArray[i] = ids.get(ids.size() - 1 - i);
- }
- c.setColumnOrder(idsArray);
- }
- }
- });
-
- LinkedHashMap<String, CellStyleGenerator> cellStyleGenerators = new LinkedHashMap<>();
- LinkedHashMap<String, RowStyleGenerator> rowStyleGenerators = new LinkedHashMap<>();
- rowStyleGenerators.put(ROW_STYLE_GENERATOR_NONE, null);
- rowStyleGenerators.put(ROW_STYLE_GENERATOR_ROW_NUMBERS,
- new RowStyleGenerator() {
- @Override
- public String getStyle(RowReference rowReference) {
- return "row" + rowReference.getItemId();
- }
- });
- rowStyleGenerators.put(ROW_STYLE_GENERATOR_ROW_NUMBERS_FOR_3_OF_4,
- new RowStyleGenerator() {
- @Override
- public String getStyle(RowReference rowReference) {
- int rowIndex = ((Integer) rowReference.getItemId())
- .intValue();
-
- if (rowIndex % 4 == 0) {
- return null;
- } else {
- return "row" + rowReference.getItemId();
- }
- }
- });
- rowStyleGenerators.put(ROW_STYLE_GENERATOR_EMPTY,
- new RowStyleGenerator() {
-
- @Override
- public String getStyle(RowReference rowReference) {
- return "";
- }
- });
- rowStyleGenerators.put(ROW_STYLE_GENERATOR_NULL,
- new RowStyleGenerator() {
-
- @Override
- public String getStyle(RowReference rowReference) {
- return null;
- }
- });
- cellStyleGenerators.put(CELL_STYLE_GENERATOR_NONE, null);
- cellStyleGenerators.put(CELL_STYLE_GENERATOR_PROPERTY_TO_STRING,
- new CellStyleGenerator() {
- @Override
- public String getStyle(CellReference cellReference) {
- return cellReference.getPropertyId().toString()
- .replace(' ', '-');
- }
- });
- cellStyleGenerators.put(CELL_STYLE_GENERATOR_SPECIAL,
- new CellStyleGenerator() {
- @Override
- public String getStyle(CellReference cellReference) {
- int rowIndex = ((Integer) cellReference.getItemId())
- .intValue();
- Object propertyId = cellReference.getPropertyId();
- if (rowIndex % 4 == 1) {
- return null;
- } else if (rowIndex % 4 == 3
- && "Column 1".equals(propertyId)) {
- return null;
- }
- return propertyId.toString().replace(' ', '_');
- }
- });
- cellStyleGenerators.put(CELL_STYLE_GENERATOR_EMPTY,
- new CellStyleGenerator() {
- @Override
- public String getStyle(CellReference cellReference) {
- return "";
- }
- });
- cellStyleGenerators.put(CELL_STYLE_GENERATOR_NULL,
- new CellStyleGenerator() {
- @Override
- public String getStyle(CellReference cellReference) {
- return null;
- }
- });
-
- createSelectAction("Row style generator", "State", rowStyleGenerators,
- CELL_STYLE_GENERATOR_NONE,
- new Command<Grid, RowStyleGenerator>() {
- @Override
- public void execute(Grid grid, RowStyleGenerator generator,
- Object data) {
- grid.setRowStyleGenerator(generator);
- }
- });
-
- createSelectAction("Cell style generator", "State", cellStyleGenerators,
- CELL_STYLE_GENERATOR_NONE,
- new Command<Grid, CellStyleGenerator>() {
- @Override
- public void execute(Grid grid, CellStyleGenerator generator,
- Object data) {
- grid.setCellStyleGenerator(generator);
- }
- });
-
- LinkedHashMap<String, ContentMode> contentModes = new LinkedHashMap<String, ContentMode>();
- contentModes.put("None", null);
- // Abusing an unused value for this special case
- contentModes.put("Plain text", ContentMode.TEXT);
- contentModes.put("Preformatted(Default)", ContentMode.PREFORMATTED);
- contentModes.put("HTML", ContentMode.HTML);
-
- createSelectAction("Row description generator", "State", contentModes,
- "None", new Command<Grid, ContentMode>() {
- @Override
- public void execute(Grid grid, ContentMode mode, Object data) {
- if (mode == null) {
- grid.setRowDescriptionGenerator(null);
- } else if (mode == ContentMode.PREFORMATTED) {
- grid.setRowDescriptionGenerator(rowDescriptionGenerator);
- } else {
- grid.setRowDescriptionGenerator(
- rowDescriptionGenerator, mode);
- }
- }
- });
-
- createSelectAction("Cell description generator", "State",
- contentModes, "None", new Command<Grid, ContentMode>() {
- @Override
- public void execute(Grid grid, ContentMode mode, Object data) {
- if (mode == null) {
- grid.setCellDescriptionGenerator(null);
- } else if (mode == ContentMode.PREFORMATTED) {
- grid.setCellDescriptionGenerator(cellDescriptionGenerator);
- } else {
- grid.setCellDescriptionGenerator(
- cellDescriptionGenerator, mode);
- }
- }
- });
-
- LinkedHashMap<String, Integer> frozenOptions = new LinkedHashMap<>();
- for (int i = -1; i <= COLUMNS; i++) {
- frozenOptions.put(String.valueOf(i), Integer.valueOf(i));
- }
- /*
- * This line below is a workaround for a FF24 bug regarding submenu
- * handling - it makes the sub menu wider.
- */
- frozenOptions.put("-1 for unfreezing selection column", -1);
- createSelectAction("Frozen column count", "State", frozenOptions, "0",
- new Command<Grid, Integer>() {
- @Override
- public void execute(Grid c, Integer value, Object data) {
- c.setFrozenColumnCount(value.intValue());
- }
- });
-
- LinkedHashMap<String, Integer> containerDelayValues = new LinkedHashMap<>();
- for (int delay : new int[] { 0, 500, 2000, 10000 }) {
- containerDelayValues.put(String.valueOf(delay),
- Integer.valueOf(delay));
- }
-
- createSelectAction("Container delay", "State", containerDelayValues,
- "0", new Command<Grid, Integer>() {
- @Override
- public void execute(Grid grid, Integer delay, Object data) {
- containerDelay = delay.intValue();
- }
- });
-
- createBooleanAction("ItemClickListener", "State", false,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- if (!value) {
- c.removeItemClickListener(itemClickListener);
- } else {
- c.addItemClickListener(itemClickListener);
- }
- }
-
- });
-
- createBooleanAction("EditorOpeningItemClickListener", "State", false,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- if (!value) {
- c.removeItemClickListener(
- editorOpeningItemClickListener);
- } else {
- c.addItemClickListener(
- editorOpeningItemClickListener);
- }
- }
-
- });
- createBooleanAction("ReactiveValueChanger", "State", false,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- Field<?> targetField = grid.getEditorFieldGroup()
- .getField("Column 0");
- if (targetField != null) {
- if (!value) {
- targetField.removeValueChangeListener(
- reactiveValueChanger);
- } else {
- targetField.addValueChangeListener(
- reactiveValueChanger);
- }
- }
- }
-
- });
- createBooleanAction("ColumnReorderListener", "State", false,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid grid, Boolean value, Object data) {
- if (value) {
- grid.addColumnReorderListener(
- columnReorderListener);
- } else {
- grid.removeColumnReorderListener(
- columnReorderListener);
- }
- }
- });
- createBooleanAction("ColumnVisibilityChangeListener", "State", false,
- new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid grid, Boolean value, Object data) {
- if (value) {
- grid.addColumnVisibilityChangeListener(
- columnVisibilityListener);
- } else {
- grid.removeColumnVisibilityChangeListener(
- columnVisibilityListener);
- }
- }
- });
- createBooleanAction("Single select allow deselect", "State",
- singleSelectAllowDeselect, new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- singleSelectAllowDeselect = value.booleanValue();
-
- SelectionModel model = c.getSelectionModel();
- if (model instanceof SelectionModel.Single) {
- ((SelectionModel.Single) model).setDeselectAllowed(
- singleSelectAllowDeselect);
- }
- }
- });
- createBooleanAction("Column Reordering Allowed", "State", false,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- c.setColumnReorderingAllowed(value);
- }
- });
-
- createClickAction("Select all", "State", new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- SelectionModel selectionModel = c.getSelectionModel();
- if (selectionModel instanceof SelectionModel.Multi) {
- ((SelectionModel.Multi) selectionModel).selectAll();
- }
- }
- }, null);
-
- createClickAction("Select none", "State", new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- SelectionModel selectionModel = c.getSelectionModel();
- if (selectionModel instanceof SelectionModel.Multi) {
- ((SelectionModel.Multi) selectionModel).deselectAll();
- }
- }
- }, null);
- }
-
- protected void createHeaderActions() {
- createCategory("Header", null);
-
- createBooleanAction("Visible", "Header", true,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid grid, Boolean value, Object data) {
- grid.setHeaderVisible(value);
- }
- });
-
- LinkedHashMap<String, String> defaultRows = new LinkedHashMap<>();
- defaultRows.put("Top", "Top");
- defaultRows.put("Bottom", "Bottom");
- defaultRows.put("Unset", "Unset");
-
- createMultiClickAction("Default row", "Header", defaultRows,
- new Command<Grid, String>() {
-
- @Override
- public void execute(Grid grid, String value, Object data) {
- HeaderRow defaultRow = null;
- if (value.equals("Top")) {
- defaultRow = grid.getHeaderRow(0);
- } else if (value.equals("Bottom")) {
- defaultRow = grid
- .getHeaderRow(grid.getHeaderRowCount() - 1);
- }
- grid.setDefaultHeaderRow(defaultRow);
- }
-
- }, defaultRows.get("Top"));
-
- createClickAction("Prepend row", "Header", new Command<Grid, Object>() {
-
- @Override
- public void execute(Grid grid, Object value, Object data) {
- grid.prependHeaderRow();
- }
-
- }, null);
- createClickAction("Append row", "Header", new Command<Grid, Object>() {
-
- @Override
- public void execute(Grid grid, Object value, Object data) {
- grid.appendHeaderRow();
- }
-
- }, null);
-
- createClickAction("Remove top row", "Header",
- new Command<Grid, Object>() {
-
- @Override
- public void execute(Grid grid, Object value, Object data) {
- grid.removeHeaderRow(0);
- }
-
- }, null);
- createClickAction("Remove bottom row", "Header",
- new Command<Grid, Object>() {
-
- @Override
- public void execute(Grid grid, Object value, Object data) {
- grid.removeHeaderRow(grid.getHeaderRowCount() - 1);
- }
-
- }, null);
- }
-
- protected void createFooterActions() {
- createCategory("Footer", null);
-
- createBooleanAction("Visible", "Footer", false,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid grid, Boolean value, Object data) {
- grid.setFooterVisible(value);
- }
- });
-
- createClickAction("Prepend row", "Footer", new Command<Grid, Object>() {
-
- @Override
- public void execute(Grid grid, Object value, Object data) {
- grid.prependFooterRow();
- }
-
- }, null);
- createClickAction("Append row", "Footer", new Command<Grid, Object>() {
-
- @Override
- public void execute(Grid grid, Object value, Object data) {
- grid.appendFooterRow();
- }
-
- }, null);
-
- createClickAction("Remove top row", "Footer",
- new Command<Grid, Object>() {
-
- @Override
- public void execute(Grid grid, Object value, Object data) {
- grid.removeFooterRow(0);
- }
-
- }, null);
- createClickAction("Remove bottom row", "Footer",
- new Command<Grid, Object>() {
-
- @Override
- public void execute(Grid grid, Object value, Object data) {
- grid.removeFooterRow(grid.getFooterRowCount() - 1);
- }
-
- }, null);
- }
-
- @SuppressWarnings("boxing")
- protected void createColumnActions() {
- createCategory("Columns", null);
- for (int c = 0; c < COLUMNS; c++) {
- final int index = c;
- createCategory(getColumnProperty(c), "Columns");
-
- createClickAction("Add / Remove", getColumnProperty(c),
- new Command<Grid, String>() {
-
- boolean wasHidable;
- boolean wasHidden;
- String wasColumnHidingToggleCaption;
-
- @Override
- public void execute(Grid grid, String value,
- Object data) {
- String columnProperty = getColumnProperty(
- (Integer) data);
- Column column = grid.getColumn(columnProperty);
- if (column == null) {
- column = grid.addColumn(columnProperty);
- column.setHidable(wasHidable);
- column.setHidden(wasHidden);
- column.setHidingToggleCaption(
- wasColumnHidingToggleCaption);
- } else {
- wasHidable = column.isHidable();
- wasHidden = column.isHidden();
- wasColumnHidingToggleCaption = column
- .getHidingToggleCaption();
- grid.removeColumn(columnProperty);
- }
- }
- }, null, c);
- createClickAction("Move left", getColumnProperty(c),
- new Command<Grid, String>() {
-
- @Override
- public void execute(Grid grid, String value,
- Object data) {
- final String columnProperty = getColumnProperty(
- (Integer) data);
- List<Column> cols = grid.getColumns();
- List<Object> reordered = new ArrayList<>();
- boolean addAsLast = false;
- for (int i = 0; i < cols.size(); i++) {
- Column col = cols.get(i);
- if (col.getPropertyId()
- .equals(columnProperty)) {
- if (i == 0) {
- addAsLast = true;
- } else {
- reordered.add(i - 1, columnProperty);
- }
- } else {
- reordered.add(col.getPropertyId());
- }
- }
- if (addAsLast) {
- reordered.add(columnProperty);
- }
- grid.setColumnOrder(reordered.toArray());
- }
- }, null, c);
-
- createBooleanAction("Sortable", getColumnProperty(c), true,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid grid, Boolean value,
- Object columnIndex) {
- Object propertyId = getColumnProperty(
- (Integer) columnIndex);
- Column column = grid.getColumn(propertyId);
- column.setSortable(value);
- }
- }, c);
-
- createBooleanAction("Resizable", getColumnProperty(c), true,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid grid, Boolean value,
- Object columnIndex) {
- Object propertyId = getColumnProperty(
- (Integer) columnIndex);
- Column column = grid.getColumn(propertyId);
- column.setResizable(value);
- }
- }, c);
-
- createBooleanAction("Hidable", getColumnProperty(c),
- isColumnHidableByDefault(c), new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid c, Boolean hidable,
- Object propertyId) {
- grid.getColumn(propertyId).setHidable(hidable);
- }
- }, getColumnProperty(c));
-
- createBooleanAction("Hidden", getColumnProperty(c),
- isColumnHiddenByDefault(c), new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid c, Boolean hidden,
- Object propertyId) {
- grid.getColumn(propertyId).setHidden(hidden);
- }
- }, getColumnProperty(c));
- createClickAction("Change hiding toggle caption",
- getColumnProperty(c), new Command<Grid, String>() {
- int count = 0;
-
- @Override
- public void execute(Grid grid, String value,
- Object data) {
- final String columnProperty = getColumnProperty(
- (Integer) data);
- grid.getColumn(columnProperty)
- .setHidingToggleCaption(columnProperty
- + " caption " + count++);
- }
- }, null, c);
-
- createClickAction("Change header caption", getColumnProperty(c),
- new Command<Grid, String>() {
- int count = 0;
-
- @Override
- public void execute(Grid grid, String value,
- Object data) {
- final String columnProperty = getColumnProperty(
- (Integer) data);
- grid.getColumn(columnProperty).setHeaderCaption(
- columnProperty + " header " + count++);
- }
- }, null, c);
-
- createCategory("Column " + c + " Width", getColumnProperty(c));
-
- createClickAction("Auto", "Column " + c + " Width",
- new Command<Grid, Integer>() {
-
- @Override
- public void execute(Grid grid, Integer value,
- Object columnIndex) {
- Object propertyId = getColumnProperty(
- (Integer) columnIndex);
- Column column = grid.getColumn(propertyId);
- column.setWidthUndefined();
- }
- }, -1, c);
-
- createClickAction("25.5px", "Column " + c + " Width",
- new Command<Grid, Void>() {
- @Override
- public void execute(Grid grid, Void value,
- Object columnIndex) {
- grid.getColumns().get((Integer) columnIndex)
- .setWidth(25.5);
- }
- }, null, c);
-
- for (int w = 50; w < 300; w += 50) {
- createClickAction(w + "px", "Column " + c + " Width",
- new Command<Grid, Integer>() {
-
- @Override
- public void execute(Grid grid, Integer value,
- Object columnIndex) {
- Object propertyId = getColumnProperty(
- (Integer) columnIndex);
- Column column = grid.getColumn(propertyId);
- column.setWidth(value);
- }
- }, w, c);
- }
-
- LinkedHashMap<String, GridStaticCellType> defaultRows = new LinkedHashMap<>();
- defaultRows.put("Text Header", GridStaticCellType.TEXT);
- defaultRows.put("Html Header ", GridStaticCellType.HTML);
- defaultRows.put("Widget Header", GridStaticCellType.WIDGET);
-
- createMultiClickAction("Header Type", getColumnProperty(c),
- defaultRows, new Command<Grid, GridStaticCellType>() {
-
- @Override
- public void execute(Grid grid, GridStaticCellType value,
- Object columnIndex) {
- final Object propertyId = getColumnProperty(
- (Integer) columnIndex);
- final HeaderCell cell = grid.getDefaultHeaderRow()
- .getCell(propertyId);
- switch (value) {
- case TEXT:
- cell.setText("Text Header");
- break;
- case HTML:
- cell.setHtml("HTML Header");
- break;
- case WIDGET:
- cell.setComponent(new Button("Button Header",
- new ClickListener() {
-
- @Override
- public void buttonClick(
- ClickEvent event) {
- log("Button clicked!");
- }
- }));
- default:
- break;
- }
- }
-
- }, c);
-
- defaultRows = new LinkedHashMap<>();
- defaultRows.put("Text Footer", GridStaticCellType.TEXT);
- defaultRows.put("Html Footer", GridStaticCellType.HTML);
- defaultRows.put("Widget Footer", GridStaticCellType.WIDGET);
-
- createMultiClickAction("Footer Type", getColumnProperty(c),
- defaultRows, new Command<Grid, GridStaticCellType>() {
-
- @Override
- public void execute(Grid grid, GridStaticCellType value,
- Object columnIndex) {
- final Object propertyId = getColumnProperty(
- (Integer) columnIndex);
- final FooterCell cell = grid.getFooterRow(0)
- .getCell(propertyId);
- switch (value) {
- case TEXT:
- cell.setText("Text Footer");
- break;
- case HTML:
- cell.setHtml("HTML Footer");
- break;
- case WIDGET:
- cell.setComponent(new Button("Button Footer",
- new ClickListener() {
-
- @Override
- public void buttonClick(
- ClickEvent event) {
- log("Button clicked!");
- }
- }));
- default:
- break;
- }
- }
-
- }, c);
- }
-
- createClickAction("All columns auto width", "Columns",
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- for (Column col : grid.getColumns()) {
- col.setWidthUndefined();
- }
-
- }
- }, null);
-
- createBooleanAction("All columns hidable", "Columns", false,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- for (Column col : grid.getColumns()) {
- col.setHidable(value);
- }
-
- }
- });
- createBooleanAction("Toggle all column hidden state", "Columns", false,
- new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- for (Column col : grid.getColumns()) {
- col.setHidden(!col.isHidden());
- }
- }
- });
- createBooleanAction("All columns resizable", "Columns", false,
- new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- for (Column col : grid.getColumns()) {
- col.setResizable(value);
- }
-
- }
- });
-
- createClickAction("All columns expanding, Col 0 has max width of 30px",
- "Columns", new Command<Grid, Boolean>() {
-
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- for (Column col : grid.getColumns()) {
- col.setWidthUndefined();
- }
- grid.getColumns().get(0).setMaximumWidth(30);
- }
- }, null);
- createBooleanAction("Simple resize mode", "Columns", false,
- new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid g, Boolean value, Object data) {
- g.setColumnResizeMode(value ? ColumnResizeMode.SIMPLE
- : ColumnResizeMode.ANIMATED);
- }
- });
- }
-
- private static String getColumnProperty(int c) {
- return "Column " + c;
- }
-
- protected void createPropertyActions() {
- createCategory("Properties", null);
-
- createBooleanAction("Prepend property", "Properties", false,
- new Command<Grid, Boolean>() {
- private final Object propertyId = new Object();
-
- @Override
- public void execute(Grid c, Boolean enable, Object data) {
- if (enable.booleanValue()) {
- ds.addContainerProperty(propertyId, String.class,
- "property value");
- grid.getColumn(propertyId)
- .setHeaderCaption("new property");
- grid.setColumnOrder(propertyId);
- } else {
- ds.removeContainerProperty(propertyId);
- }
- }
- }, null);
- }
-
- protected void createRowActions() {
- createCategory("Body rows", null);
-
- class NewRowCommand implements Command<Grid, String> {
- private final int index;
-
- public NewRowCommand() {
- this(0);
- }
-
- public NewRowCommand(int index) {
- this.index = index;
- }
-
- @Override
- public void execute(Grid c, String value, Object data) {
- Item item = ds.addItemAt(index, new Object());
- for (int i = 0; i < COLUMNS; i++) {
- Class<?> type = ds.getType(getColumnProperty(i));
- if (String.class.isAssignableFrom(type)) {
- Property<String> itemProperty = getProperty(item, i);
- itemProperty.setValue("newcell: " + i);
- } else if (Integer.class.isAssignableFrom(type)) {
- Property<Integer> itemProperty = getProperty(item, i);
- itemProperty.setValue(Integer.valueOf(i));
- } else {
- // let the default value be taken implicitly.
- }
- }
- }
-
- private <T extends Object> Property<T> getProperty(Item item,
- int i) {
- @SuppressWarnings("unchecked")
- Property<T> itemProperty = item
- .getItemProperty(getColumnProperty(i));
- return itemProperty;
- }
- }
- final NewRowCommand newRowCommand = new NewRowCommand();
-
- createClickAction("Add 18 rows", "Body rows",
- new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- for (int i = 0; i < 18; i++) {
- newRowCommand.execute(c, value, data);
- }
- }
- }, null);
-
- createClickAction("Add first row", "Body rows", newRowCommand, null);
-
- createClickAction("Add third row", "Body rows", new NewRowCommand(2),
- null);
-
- createClickAction("Remove first row", "Body rows",
- new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- Object firstItemId = ds.getIdByIndex(0);
- ds.removeItem(firstItemId);
- }
- }, null);
-
- createClickAction("Remove 18 first rows", "Body rows",
- new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- for (int i = 0; i < 18; i++) {
- Object firstItemId = ds.getIdByIndex(0);
- ds.removeItem(firstItemId);
- }
- }
- }, null);
-
- createClickAction("Modify first row (getItemProperty)", "Body rows",
- new Command<Grid, String>() {
- @SuppressWarnings("unchecked")
- @Override
- public void execute(Grid c, String value, Object data) {
- Object firstItemId = ds.getIdByIndex(0);
- Item item = ds.getItem(firstItemId);
- for (int i = 0; i < COLUMNS; i++) {
- Property<?> property = item
- .getItemProperty(getColumnProperty(i));
- if (property.getType().equals(String.class)) {
- ((Property<String>) property)
- .setValue("modified: " + i);
- }
- }
- }
- }, null);
-
- createClickAction("Modify first row (getContainerProperty)",
- "Body rows", new Command<Grid, String>() {
- @SuppressWarnings("unchecked")
- @Override
- public void execute(Grid c, String value, Object data) {
- Object firstItemId = ds.getIdByIndex(0);
- for (Object containerPropertyId : ds
- .getContainerPropertyIds()) {
- Property<?> property = ds.getContainerProperty(
- firstItemId, containerPropertyId);
- if (property.getType().equals(String.class)) {
- ((Property<String>) property).setValue(
- "modified: " + containerPropertyId);
- }
- }
- }
- }, null);
-
- createBooleanAction("Select first row", "Body rows", false,
- new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid grid, Boolean select,
- Object data) {
- final Object firstItemId = grid.getContainerDataSource()
- .firstItemId();
- if (select.booleanValue()) {
- grid.select(firstItemId);
- } else {
- grid.deselect(firstItemId);
- }
- }
- });
-
- createClickAction("Remove all rows", "Body rows",
- new Command<Grid, String>() {
- @SuppressWarnings("unchecked")
- @Override
- public void execute(Grid c, String value, Object data) {
- ds.removeAllItems();
- }
- }, null);
-
- createClickAction("Remove selected rows", "Body rows",
- new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- // Usually you'd deselect all the rows before removing
- // them. It is done this way to test for #19152
- for (Object itemId : c.getSelectedRows()) {
- ds.removeItem(itemId);
- }
- c.select(null);
- }
- }, null);
- }
-
- protected void createEditorActions() {
- createBooleanAction("Enabled", "Editor", false,
- new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- c.setEditorEnabled(value);
- }
- });
-
- createBooleanAction("Buffered mode", "Editor", true,
- new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid c, Boolean value, Object data) {
- c.setEditorBuffered(value);
- }
- });
-
- createClickAction("Edit item 5", "Editor", new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- c.editItem(5);
- }
- }, null);
-
- createClickAction("Edit item 100", "Editor",
- new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- c.editItem(100);
- }
- }, null);
- createClickAction("Save", "Editor", new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- try {
- c.saveEditor();
- } catch (CommitException e) {
- e.printStackTrace();
- }
- }
- }, null);
- createClickAction("Cancel edit", "Editor", new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- c.cancelEditor();
- }
- }, null);
-
- createClickAction("Change save caption", "Editor",
- new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- c.setEditorSaveCaption("ǝʌɐS");
- }
- }, null);
-
- createClickAction("Change cancel caption", "Editor",
- new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- c.setEditorCancelCaption("ʃǝɔuɐↃ");
- }
- }, null);
-
- }
-
- @SuppressWarnings("boxing")
- protected void addHeightActions() {
- createCategory("Height by Rows", "Size");
-
- createBooleanAction("HeightMode Row", "Size", false,
- new Command<Grid, Boolean>() {
- @Override
- public void execute(Grid c, Boolean heightModeByRows,
- Object data) {
- c.setHeightMode(heightModeByRows ? HeightMode.ROW
- : HeightMode.CSS);
- }
- }, null);
-
- addActionForHeightByRows(1d / 3d);
- addActionForHeightByRows(2d / 3d);
-
- for (double i = 1; i < 5; i++) {
- addActionForHeightByRows(i);
- addActionForHeightByRows(i + 1d / 3d);
- addActionForHeightByRows(i + 2d / 3d);
- }
-
- Command<Grid, String> sizeCommand = new Command<Grid, String>() {
- @Override
- public void execute(Grid grid, String height, Object data) {
- grid.setHeight(height);
- }
- };
-
- createCategory("Height", "Size");
- // header 20px + scrollbar 16px = 36px baseline
- createClickAction("86px (no drag scroll select)", "Height", sizeCommand,
- "86px");
- createClickAction("96px (drag scroll select limit)", "Height",
- sizeCommand, "96px");
- createClickAction("106px (drag scroll select enabled)", "Height",
- sizeCommand, "106px");
- }
-
- private void addActionForHeightByRows(final Double i) {
- DecimalFormat df = new DecimalFormat("0.00");
- createClickAction(df.format(i) + " rows", "Height by Rows",
- new Command<Grid, String>() {
- @Override
- public void execute(Grid c, String value, Object data) {
- c.setHeightByRows(i);
- }
- }, null);
- }
-
- private void createDetailsActions() {
- Command<Grid, DetailsGenerator> swapDetailsGenerator = new Command<Grid, DetailsGenerator>() {
- @Override
- public void execute(Grid c, DetailsGenerator generator,
- Object data) {
- grid.setDetailsGenerator(generator);
- }
- };
-
- Command<Grid, Boolean> openOrCloseItemId = new Command<Grid, Boolean>() {
- @Override
- @SuppressWarnings("boxing")
- public void execute(Grid g, Boolean visible, Object itemId) {
- g.setDetailsVisible(itemId, visible);
- }
- };
-
- createCategory("Generators", "Details");
- createClickAction("NULL", "Generators", swapDetailsGenerator,
- DetailsGenerator.NULL);
- createClickAction("\"Watching\"", "Generators", swapDetailsGenerator,
- watchingDetailsGenerator);
- createClickAction("Detailed", "Generators", swapDetailsGenerator,
- detailedDetailsGenerator);
- createClickAction("Persisting", "Generators", swapDetailsGenerator,
- persistingDetailsGenerator);
-
- createClickAction("- Change Component", "Generators",
- new Command<Grid, Void>() {
- @Override
- public void execute(Grid c, Void value, Object data) {
- for (Object id : detailsMap.keySet()) {
- Panel panel = detailsMap.get(id);
- Label label = (Label) panel.getContent();
- if (label.getValue().equals("One")) {
- panel.setContent(new Label("Two"));
- } else {
- panel.setContent(new Label("One"));
- }
- }
- }
- }, null);
-
- createClickAction("Toggle firstItemId", "Details",
- new Command<Grid, Void>() {
- @Override
- public void execute(Grid g, Void value, Object data) {
- Object firstItemId = g.getContainerDataSource()
- .firstItemId();
- boolean toggle = g.isDetailsVisible(firstItemId);
- g.setDetailsVisible(firstItemId, !toggle);
- g.setDetailsVisible(firstItemId, toggle);
- }
- }, null);
-
- createBooleanAction("Open firstItemId", "Details", false,
- openOrCloseItemId, ds.firstItemId());
-
- createBooleanAction("Open 1", "Details", false, openOrCloseItemId,
- ds.getIdByIndex(1));
-
- createBooleanAction("Open 995", "Details", false, openOrCloseItemId,
- ds.getIdByIndex(995));
- }
-
- @Override
- protected Integer getTicketNumber() {
- return 12829;
- }
-
- @Override
- protected Class<Grid> getTestClass() {
- return Grid.class;
- }
-
- }
|