| /* |
| * Copyright (c) 2015 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.explorer.ui.checkouts; |
| |
| import org.eclipse.emf.cdo.CDOElement; |
| import org.eclipse.emf.cdo.common.branch.CDOBranch; |
| import org.eclipse.emf.cdo.common.branch.CDOBranchPoint; |
| import org.eclipse.emf.cdo.common.util.CDOCommonUtil; |
| import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout; |
| import org.eclipse.emf.cdo.explorer.ui.BaseLabelDecorator; |
| import org.eclipse.emf.cdo.explorer.ui.bundle.OM; |
| import org.eclipse.emf.cdo.ui.CDOLabelDecorator; |
| |
| import org.eclipse.net4j.util.AdapterUtil; |
| import org.eclipse.net4j.util.lifecycle.LifecycleException; |
| import org.eclipse.net4j.util.lifecycle.LifecycleUtil; |
| |
| import org.eclipse.swt.graphics.Image; |
| |
| /** |
| * @author Eike Stepper |
| */ |
| public class CDOCheckoutLabelDecorator extends BaseLabelDecorator |
| { |
| public CDOCheckoutLabelDecorator() |
| { |
| } |
| |
| @Override |
| public Image decorateImage(Image image, Object element) |
| { |
| try |
| { |
| CDOElement cdoElement = AdapterUtil.adapt(element, CDOElement.class); |
| if (cdoElement != null) |
| { |
| element = cdoElement.getDelegate(); |
| } |
| |
| if (element instanceof CDOCheckout) |
| { |
| image = CDOLabelDecorator.decorate(image, element); |
| } |
| } |
| catch (LifecycleException ex) |
| { |
| //$FALL-THROUGH$ |
| } |
| catch (Throwable ex) |
| { |
| if (LifecycleUtil.isActive(element)) |
| { |
| OM.LOG.error(ex); |
| } |
| } |
| |
| return image; |
| } |
| |
| @Override |
| public String decorateText(String text, Object element) |
| { |
| try |
| { |
| CDOElement cdoElement = AdapterUtil.adapt(element, CDOElement.class); |
| if (cdoElement != null) |
| { |
| element = cdoElement.getDelegate(); |
| } |
| |
| if (element instanceof CDOCheckout) |
| { |
| CDOCheckout checkout = (CDOCheckout)element; |
| |
| String branchPath = checkout.getBranchPath(); |
| if (branchPath != null) |
| { |
| if (branchPath.startsWith(CDOBranch.MAIN_BRANCH_NAME)) |
| { |
| branchPath = branchPath.substring(CDOBranch.MAIN_BRANCH_NAME.length()); |
| } |
| |
| if (branchPath.startsWith(CDOBranch.PATH_SEPARATOR)) |
| { |
| branchPath = branchPath.substring(CDOBranch.PATH_SEPARATOR.length()); |
| } |
| |
| if (branchPath.length() != 0) |
| { |
| if (checkout.isOffline()) |
| { |
| text += " [offline: " + branchPath + "]"; |
| } |
| else |
| { |
| text += " [" + branchPath + "]"; |
| } |
| } |
| else |
| { |
| if (checkout.isOffline()) |
| { |
| text += " [offline]"; |
| } |
| } |
| } |
| |
| long timeStamp = checkout.getTimeStamp(); |
| if (timeStamp != CDOBranchPoint.UNSPECIFIED_DATE) |
| { |
| text += " " + CDOCommonUtil.formatTimeStamp(timeStamp); |
| } |
| else if (checkout.isReadOnly()) |
| { |
| text += " read-only"; |
| } |
| |
| if (checkout.isOffline()) |
| { |
| if (checkout.isDirty()) |
| { |
| text += " dirty"; |
| } |
| else |
| { |
| text += " clean"; |
| } |
| } |
| } |
| } |
| catch (LifecycleException ex) |
| { |
| //$FALL-THROUGH$ |
| } |
| catch (Throwable ex) |
| { |
| if (LifecycleUtil.isActive(element)) |
| { |
| OM.LOG.error(ex); |
| } |
| } |
| |
| return text; |
| } |
| } |