// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.turnrestrictions.qa; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.util.Observable; import java.util.Observer; import javax.swing.JPanel; import org.openstreetmap.josm.gui.help.HelpUtil; import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel; import org.openstreetmap.josm.tools.CheckParameterUtil; /** * IssuesView provides a view on a {@see IssuesModel}. */ public class IssuesView extends VerticallyScrollablePanel implements Observer { //private static final Logger logger = Logger.getLogger(IssuesView.class.getName()); /** the issues model */ private IssuesModel model; protected void build() { setLayout(new GridBagLayout()); } /** * Creates the view * * @param model the model. Must not be null. * @exception IllegalArgumentException thrown if model is null */ public IssuesView(IssuesModel model) throws IllegalArgumentException { CheckParameterUtil.ensureParameterNotNull(model, "model"); this.model = model; model.addObserver(this); build(); HelpUtil.setHelpContext(this, HelpUtil.ht("/Plugin/TurnRestrictions#ErrorsAndWarnings")); } /** * Refreshes the view with the current state in the model */ public void refresh() { removeAll(); if (!model.getIssues().isEmpty()) { GridBagConstraints gc = new GridBagConstraints(); gc.anchor = GridBagConstraints.NORTHWEST; gc.fill = GridBagConstraints.HORIZONTAL; gc.weightx = 1.0; gc.weighty = 0.0; gc.gridx = 0; gc.gridy = 0; for (Issue issue: model.getIssues()) { add(new IssueView(issue), gc); gc.gridy++; } // filler - grabs remaining space gc.weighty = 1.0; add(new JPanel(), gc); } invalidate(); } /* ------------------------------------------------------------------------------- */ /* interface Observer */ /* ------------------------------------------------------------------------------- */ @Override public void update(Observable o, Object arg) { refresh(); } }