| /* |
| * Copyright (c) 2012 Eike Stepper (Berlin, Germany) 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: |
| * Eike Stepper - initial API and implementation |
| */ |
| package org.eclipse.emf.cdo.transfer.ui; |
| |
| import org.eclipse.emf.cdo.transfer.CDOTransfer; |
| import org.eclipse.emf.cdo.transfer.CDOTransferMapping; |
| import org.eclipse.emf.cdo.transfer.CDOTransferMapping.Status; |
| import org.eclipse.emf.cdo.transfer.CDOTransferSystem; |
| import org.eclipse.emf.cdo.transfer.CDOTransferType; |
| import org.eclipse.emf.cdo.transfer.spi.ui.TransferUIProvider; |
| |
| import org.eclipse.net4j.util.container.IManagedContainer; |
| import org.eclipse.net4j.util.container.IPluginContainer; |
| import org.eclipse.net4j.util.ui.UIUtil; |
| |
| import org.eclipse.jface.viewers.ILabelProvider; |
| import org.eclipse.jface.viewers.ITableColorProvider; |
| import org.eclipse.jface.viewers.ITableLabelProvider; |
| import org.eclipse.jface.viewers.LabelProvider; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.graphics.Color; |
| import org.eclipse.swt.graphics.Image; |
| |
| /** |
| * A reusable {@link ITableLabelProvider table label provider} for the {@link CDOTransferMapping mappings} of a {@link CDOTransfer transfer}. |
| * |
| * @author Eike Stepper |
| * @since 4.2 |
| */ |
| public class TransferLabelProvider extends LabelProvider implements ITableLabelProvider, ITableColorProvider |
| { |
| public static final Color GRAY = UIUtil.getDisplay().getSystemColor(SWT.COLOR_GRAY); |
| |
| public static final Color RED = UIUtil.getDisplay().getSystemColor(SWT.COLOR_RED); |
| |
| private CDOTransfer transfer; |
| |
| private ILabelProvider sourceSystemLabelProvider; |
| |
| public TransferLabelProvider(CDOTransfer transfer) |
| { |
| this.transfer = transfer; |
| |
| CDOTransferSystem sourceSystem = transfer.getSourceSystem(); |
| TransferUIProvider provider = TransferUIProvider.Factory.get(getContainer(), sourceSystem.getType()); |
| sourceSystemLabelProvider = provider.createLabelProvider(sourceSystem); |
| } |
| |
| public CDOTransfer getTransfer() |
| { |
| return transfer; |
| } |
| |
| @Override |
| public void dispose() |
| { |
| sourceSystemLabelProvider.dispose(); |
| sourceSystemLabelProvider = null; |
| super.dispose(); |
| } |
| |
| public String getColumnText(Object element, int columnIndex) |
| { |
| if (element instanceof CDOTransferMapping) |
| { |
| CDOTransferMapping mapping = (CDOTransferMapping)element; |
| switch (columnIndex) |
| { |
| case 0: |
| return sourceSystemLabelProvider.getText(mapping.getSource()); |
| case 1: |
| return mapping.getTransferType().toString(); |
| case 2: |
| return mapping.getFullPath().toString(); |
| case 3: |
| return mapping.getStatus().toString(); |
| } |
| } |
| |
| return null; |
| } |
| |
| public Image getColumnImage(Object element, int columnIndex) |
| { |
| if (element instanceof CDOTransferMapping) |
| { |
| CDOTransferMapping mapping = (CDOTransferMapping)element; |
| switch (columnIndex) |
| { |
| case 0: |
| return sourceSystemLabelProvider.getImage(mapping.getSource()); |
| case 1: |
| return null; |
| case 2: |
| return null; |
| case 3: |
| return null; |
| } |
| } |
| |
| return null; |
| } |
| |
| public Color getForeground(Object element, int columnIndex) |
| { |
| if (element instanceof CDOTransferMapping) |
| { |
| CDOTransferMapping mapping = (CDOTransferMapping)element; |
| switch (columnIndex) |
| { |
| case 0: |
| return null; |
| |
| case 1: |
| CDOTransferType transferType = mapping.getTransferType(); |
| if (transferType == CDOTransferType.FOLDER) |
| { |
| return TransferLabelProvider.GRAY; |
| } |
| |
| return null; |
| |
| case 2: |
| case 3: |
| Status status = mapping.getStatus(); |
| if (status == Status.MERGE) |
| { |
| return TransferLabelProvider.GRAY; |
| } |
| |
| if (status == Status.CONFLICT) |
| { |
| return TransferLabelProvider.RED; |
| } |
| |
| return null; |
| } |
| } |
| |
| return null; |
| } |
| |
| public Color getBackground(Object element, int columnIndex) |
| { |
| return null; |
| } |
| |
| protected IManagedContainer getContainer() |
| { |
| return IPluginContainer.INSTANCE; |
| } |
| } |