/******************************************************************************* * Copyright (c) 2012, 2013 Original authors and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Original authors and others - initial API and implementation ******************************************************************************/ package org.eclipse.nebula.widgets.nattable.dataset.fixture.data; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; import java.util.ArrayList; import java.util.List; /** * Bean wired with a property change listener for Glazed lists. See Glazed Lists * ObservableElementList Screencast for details * */ public class BlinkingRowDataFixture extends RowDataFixture { private PropertyChangeSupport support = new PropertyChangeSupport(this); private final PropertyChangeListener changeListener; public BlinkingRowDataFixture(PropertyChangeListener changeListener, RowDataFixture rowDataFixture) { super(rowDataFixture.getSecurity_id(), rowDataFixture.getSecurity_description(), rowDataFixture.getRating(), rowDataFixture.getIssue_date(), rowDataFixture.getPricing_type(), rowDataFixture.getBid_price(), rowDataFixture.getAsk_price(), rowDataFixture.getLot_size(), rowDataFixture.isPublish_flag(), rowDataFixture.getHigh52Week(), rowDataFixture.getLow52Week(), rowDataFixture.getEps(), rowDataFixture.getVolume(), rowDataFixture.getMarketCap(), rowDataFixture.getInstitutionOwned()); this.changeListener = changeListener; addPropertyChangeListener(changeListener); } public static List<BlinkingRowDataFixture> getList(PropertyChangeListener changeListener) { List<RowDataFixture> list = RowDataListFixture.getList(); List<BlinkingRowDataFixture> blinkingList = new ArrayList<BlinkingRowDataFixture>(); for (RowDataFixture rowDataFixture : list) { blinkingList.add(new BlinkingRowDataFixture(changeListener, rowDataFixture)); } return blinkingList; } // Methods invoked by Glazed lists to add/remove property change listeners public void addPropertyChangeListener(PropertyChangeListener l) { this.support.addPropertyChangeListener(l); } public void removePropertyChangeListener(PropertyChangeListener l) { this.support.removePropertyChangeListener(l); this.support.removePropertyChangeListener(this.changeListener); } // Accessors modified to fire property change events @Override public void setBid_price(double bid_price) { double oldBidPrice = this.bid_price; this.bid_price = bid_price; this.support.firePropertyChange("bid_price", Double.valueOf(oldBidPrice), Double.valueOf(this.bid_price)); } @Override public void setAsk_price(double ask_price) { double oldAskPrice = this.ask_price; this.ask_price = ask_price; this.support.firePropertyChange("ask_price", Double.valueOf(oldAskPrice), Double.valueOf(this.ask_price)); } @Override public String toString() { return getSecurity_description(); } }