All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.vaadin.shared.ui.grid.DetailsConnectorChange Maven / Gradle / Ivy

/*
 * Copyright 2000-2014 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.shared.ui.grid;

import java.io.Serializable;
import java.util.Comparator;

import com.vaadin.shared.Connector;

/**
 * A description of an indexing modification for a connector. This is used by
 * Grid for internal bookkeeping updates.
 * 
 * @since 7.5.0
 * @author Vaadin Ltd
 */
public class DetailsConnectorChange implements Serializable {

    public static final Comparator REMOVED_FIRST_COMPARATOR = new Comparator() {
        @Override
        public int compare(DetailsConnectorChange a, DetailsConnectorChange b) {
            boolean deleteA = a.getNewIndex() == null;
            boolean deleteB = b.getNewIndex() == null;
            if (deleteA && !deleteB) {
                return -1;
            } else if (!deleteA && deleteB) {
                return 1;
            } else {
                return 0;
            }
        }
    };

    private Connector connector;
    private Integer oldIndex;
    private Integer newIndex;
    private boolean shouldStillBeVisible;

    /** Create a new connector index change */
    public DetailsConnectorChange() {
    }

    /**
     * Convenience constructor for setting all the fields in one line.
     * 

* Calling this constructor will also assert that the state of the pojo is * consistent by internal assumptions. * * @param connector * the changed connector * @param oldIndex * the old index * @param newIndex * the new index * @param shouldStillBeVisible * details should be visible regardless of {@code connector} */ public DetailsConnectorChange(Connector connector, Integer oldIndex, Integer newIndex, boolean shouldStillBeVisible) { this.connector = connector; this.oldIndex = oldIndex; this.newIndex = newIndex; this.shouldStillBeVisible = shouldStillBeVisible; assert assertStateIsOk(); } private boolean assertStateIsOk() { boolean connectorAndNewIndexIsNotNull = connector != null && newIndex != null; boolean connectorAndNewIndexIsNullThenOldIndexIsSet = connector == null && newIndex == null && oldIndex != null; assert (connectorAndNewIndexIsNotNull || connectorAndNewIndexIsNullThenOldIndexIsSet) : "connector: " + nullityString(connector) + ", oldIndex: " + nullityString(oldIndex) + ", newIndex: " + nullityString(newIndex); return true; } private static String nullityString(Object object) { return object == null ? "null" : "non-null"; } /** * Gets the old index for the connector. *

* If null, the connector is recently added. This means that * {@link #getConnector()} is expected not to return null. * * @return the old index for the connector */ public Integer getOldIndex() { assert assertStateIsOk(); return oldIndex; } /** * Gets the new index for the connector. *

* If null, the connector should be removed. This means that * {@link #getConnector()} is expected to return null as well. * * @return the new index for the connector */ public Integer getNewIndex() { assert assertStateIsOk(); return newIndex; } /** * Gets the changed connector. * * @return the changed connector. Might be null */ public Connector getConnector() { assert assertStateIsOk(); return connector; } /** * Sets the changed connector. * * @param connector * the changed connector. May be null */ public void setConnector(Connector connector) { this.connector = connector; } /** * Sets the old index * * @param oldIndex * the old index. May be null if a new connector is * being inserted */ public void setOldIndex(Integer oldIndex) { this.oldIndex = oldIndex; } /** * Sets the new index * * @param newIndex * the new index. May be null if a connector is * being removed */ public void setNewIndex(Integer newIndex) { this.newIndex = newIndex; } /** * Checks whether whether the details should remain open, even if connector * might be null. * * @return true iff the details should remain open, even if * connector might be null */ public boolean isShouldStillBeVisible() { return shouldStillBeVisible; } /** * Sets whether the details should remain open, even if connector might be * null. * * @param shouldStillBeVisible * true iff the details should remain open, even if * connector might be null */ public void setShouldStillBeVisible(boolean shouldStillBeVisible) { this.shouldStillBeVisible = shouldStillBeVisible; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy