/* * Copyright 2012 Dart project authors. * * Licensed under the Eclipse Public License v1.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.google.dart.tools.debug.ui.internal.dialogs; import com.google.dart.tools.debug.core.DartLaunchConfigWrapper; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IPath; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.ui.DebugUITools; import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.StyledString; import org.eclipse.swt.graphics.Image; /** * A label provider for the manage launches dialog. * * @see ManageLaunchesDialog */ class LaunchConfigLabelProvider extends LabelProvider implements DelegatingStyledCellLabelProvider.IStyledLabelProvider { private ILabelProvider delegateProvider; public LaunchConfigLabelProvider() { delegateProvider = DebugUITools.newDebugModelPresentation(); } @Override public Image getImage(Object element) { return delegateProvider.getImage(element); } @Override public StyledString getStyledText(Object element) { StyledString str = new StyledString(); str.append(getText(element)); if (element instanceof ILaunchConfiguration) { ILaunchConfiguration config = (ILaunchConfiguration) element; String appendText = getAppendText(config); if (appendText != null) { str.append(appendText, StyledString.QUALIFIER_STYLER); } } return str; } @Override public String getText(Object element) { if (element instanceof ILaunchConfiguration) { ILaunchConfiguration config = (ILaunchConfiguration) element; return config.getName(); } else { return delegateProvider.getText(element); } } private String getAppendText(ILaunchConfiguration config) { DartLaunchConfigWrapper wrapper = new DartLaunchConfigWrapper(config); if (wrapper.getShouldLaunchFile()) { IResource resource = wrapper.getApplicationResource(); if (resource != null) { return " " + prettyPrintWorkspacePath(resource.getFullPath()); } } else { String url = wrapper.getUrl(); if (url != null && url.length() > 0) { return " " + url; } } return null; } private String prettyPrintWorkspacePath(IPath path) { return path.segment(0) + ", " + path.removeFirstSegments(1); } }