com.vectrace.MercurialEclipse.ui.PatchTable.java Source code

Java tutorial

Introduction

Here is the source code for com.vectrace.MercurialEclipse.ui.PatchTable.java

Source

/*******************************************************************************
 * Copyright (c) 2005-2010 VecTrace (Zingo Andersen) 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:
 *     Jerome Negre              - implementation
 *     Bastian Doetsch           - adaptation to patches
 *     Andrei Loskutov - bug fixes
 *     Philip Graf               - refactoring: replaced Table with TableViewer
 *******************************************************************************/
package com.vectrace.MercurialEclipse.ui;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.layout.TableColumnLayout;
import org.eclipse.jface.viewers.ColumnLayoutData;
import org.eclipse.jface.viewers.ColumnPixelData;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;

import com.aragost.javahg.ext.mq.Patch;

/**
 *
 * @author Jerome Negre <jerome+hg@jnegre.org>
 */
public class PatchTable extends AbstractHighlightableTable<Patch> {

    public PatchTable(Composite parent) {
        super(parent, new PatchTableLabelProvider());
    }

    /**
     * @see com.vectrace.MercurialEclipse.ui.AbstractHighlightableTable#createColumns(org.eclipse.jface.viewers.TableViewer, org.eclipse.jface.layout.TableColumnLayout)
     */
    @Override
    protected List<TableViewerColumn> createColumns(TableViewer viewer, TableColumnLayout tableColumnLayout) {
        List<TableViewerColumn> l = new ArrayList<TableViewerColumn>(4);

        String[] titles = { Messages.getString("PatchTable.index"), //$NON-NLS-1$
                Messages.getString("PatchTable.applied"), //$NON-NLS-1$
                Messages.getString("PatchTable.name"), //$NON-NLS-1$
                Messages.getString("PatchTable.summary") }; //$NON-NLS-1$
        ColumnLayoutData[] columnWidths = { new ColumnPixelData(20, false, true),
                new ColumnPixelData(75, false, true), new ColumnWeightData(25, 200, true),
                new ColumnWeightData(75, 200, true) };
        for (int i = 0; i < titles.length; i++) {
            TableViewerColumn column = new TableViewerColumn(viewer, SWT.NONE);
            column.getColumn().setText(titles[i]);
            tableColumnLayout.setColumnData(column.getColumn(), columnWidths[i]);
            l.add(column);
        }

        return l;
    }

    private static class PatchTableLabelProvider extends HighlightingLabelProvider<Patch> {

        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            Patch patch = (Patch) element;
            switch (columnIndex) {
            case 0:
                return String.valueOf(patch.getIndex());
            case 1:
                return patch.isApplied() ? Messages.getString("PatchTable.statusApplied") //$NON-NLS-1$
                        : Messages.getString("PatchTable.statusUnapplied"); //$NON-NLS-1$
            case 2:
                return patch.getName();
            case 3:
                return patch.getSummary();
            }
            return null;
        }

        /**
         * @see com.vectrace.MercurialEclipse.ui.AbstractHighlightableTable.HighlightingLabelProvider#isHighlighted(java.lang.Object)
         */
        @Override
        public boolean isHighlighted(Patch patch) {
            return patch.isApplied();
        }
    }
}