Package org.openstreetmap.josm.gui.conflict.tags

Source Code of org.openstreetmap.josm.gui.conflict.tags.RelationMemberConflictResolverColumnModel

// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.conflict.tags;

import static org.openstreetmap.josm.tools.I18n.tr;

import java.awt.Component;

import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;

import org.openstreetmap.josm.gui.OsmPrimitivRenderer;
import org.openstreetmap.josm.gui.conflict.ConflictColors;
import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;

public class RelationMemberConflictResolverColumnModel extends DefaultTableColumnModel {

    private final DefaultTableCellRenderer defaultTableCellRenderer = new DefaultTableCellRenderer();
   
    private final OsmPrimitivRenderer primitiveRenderer = new OsmPrimitivRenderer() {
        @Override
        public Component getTableCellRendererComponent(JTable table,
                Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            return setColors(super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column),
                    table, isSelected, row);
        }
    };
   
    private final TableCellRenderer tableRenderer = new TableCellRenderer() {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int row, int column) {
            return setColors(defaultTableCellRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column),
                    table, isSelected, row);
        }
    };
   
    private static Component setColors(Component comp, JTable table, boolean isSelected, int row) {
        RelationMemberConflictResolverModel model = (RelationMemberConflictResolverModel) table.getModel();
       
        if (!isSelected && comp != null) {
            switch (model.getDecision(row).getDecision()) {
            case UNDECIDED:
                comp.setForeground(ConflictColors.FGCOLOR_UNDECIDED.get());
                comp.setBackground(ConflictColors.BGCOLOR_UNDECIDED.get());
                break;
            case KEEP:
                comp.setForeground(ConflictColors.FGCOLOR_MEMBER_KEEP.get());
                comp.setBackground(ConflictColors.BGCOLOR_MEMBER_KEEP.get());
                break;
            case REMOVE:
                comp.setForeground(ConflictColors.FGCOLOR_MEMBER_REMOVE.get());
                comp.setBackground(ConflictColors.BGCOLOR_MEMBER_REMOVE.get());
                break;
            }
        }
        return comp;
    }
   
    protected final void createColumns() {
       
        AutoCompletingTextField roleEditor = new AutoCompletingTextField();
        RelationMemberConflictDecisionRenderer decisionRenderer = new RelationMemberConflictDecisionRenderer();
        RelationMemberConflictDecisionEditor decisionEditor = new RelationMemberConflictDecisionEditor();

        TableColumn col = null;

        // column 0 - Relation
        col = new TableColumn(0);
        col.setHeaderValue("Relation");
        col.setResizable(true);
        col.setWidth(100);
        col.setPreferredWidth(100);
        col.setCellRenderer(primitiveRenderer);
        addColumn(col);

        // column 1 - Position
        col = new TableColumn(1);
        col.setHeaderValue(tr("Pos."));
        col.setResizable(true);
        col.setWidth(40);
        col.setPreferredWidth(40);
        col.setCellRenderer(tableRenderer);
        col.setMaxWidth(50);
        addColumn(col);

        // column 2 - Role
        col = new TableColumn(2);
        col.setHeaderValue(tr("Role"));
        col.setResizable(true);
        col.setCellRenderer(tableRenderer);
        col.setCellEditor(roleEditor);
        col.setWidth(50);
        col.setPreferredWidth(50);
        addColumn(col);

        // column 3 - Original Way
        col = new TableColumn(3);
        col.setHeaderValue(tr("Orig. Way"));
        col.setResizable(true);
        col.setCellRenderer(primitiveRenderer);
        col.setWidth(100);
        col.setPreferredWidth(100);
        addColumn(col);
       
        // column 4 - New Way
        col = new TableColumn(4);
        col.setHeaderValue(tr("Decision"));
        col.setResizable(true);
        col.setCellRenderer(decisionRenderer);
        col.setCellEditor(decisionEditor);
        col.setWidth(100);
        col.setPreferredWidth(100);
        col.setMaxWidth(100);
        addColumn(col);
    }

    /**
     * Constructs a new {@code RelationMemberConflictResolverColumnModel}.
     */
    public RelationMemberConflictResolverColumnModel() {
        createColumns();
    }
}
TOP

Related Classes of org.openstreetmap.josm.gui.conflict.tags.RelationMemberConflictResolverColumnModel

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.