X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/StatusBarUpdater.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/StatusBarUpdater.java new file mode 100644 index 0000000..978536f --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/viewsupport/StatusBarUpdater.java @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.internal.ui.viewsupport; + +import net.sourceforge.phpdt.core.IJavaElement; +import net.sourceforge.phpdt.internal.ui.PHPUIMessages; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IResource; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; + +/** + * Add the StatusBarUpdater to your ViewPart to have the + * statusbar describing the selected elements. + */ +public class StatusBarUpdater implements ISelectionChangedListener { + + private final int LABEL_FLAGS = JavaElementLabels.DEFAULT_QUALIFIED + | JavaElementLabels.ROOT_POST_QUALIFIED + | JavaElementLabels.APPEND_ROOT_PATH + | JavaElementLabels.M_PARAMETER_TYPES + | JavaElementLabels.M_PARAMETER_NAMES + | JavaElementLabels.M_APP_RETURNTYPE + | JavaElementLabels.M_EXCEPTIONS + | JavaElementLabels.F_APP_TYPE_SIGNATURE; + + private IStatusLineManager fStatusLineManager; + + public StatusBarUpdater(IStatusLineManager statusLineManager) { + fStatusLineManager = statusLineManager; + } + + /* + * @see ISelectionChangedListener#selectionChanged + */ + public void selectionChanged(SelectionChangedEvent event) { + String statusBarMessage = formatMessage(event.getSelection()); + fStatusLineManager.setMessage(statusBarMessage); + } + + protected String formatMessage(ISelection sel) { + if (sel instanceof IStructuredSelection && !sel.isEmpty()) { + IStructuredSelection selection = (IStructuredSelection) sel; + + int nElements = selection.size(); + if (nElements > 1) { + return PHPUIMessages + .getFormattedString( + "StatusBarUpdater.num_elements_selected", String.valueOf(nElements)); //$NON-NLS-1$ + } else { + Object elem = selection.getFirstElement(); + if (elem instanceof IJavaElement) { + return formatJavaElementMessage((IJavaElement) elem); + } else if (elem instanceof IResource) { + return formatResourceMessage((IResource) elem); + } + } + } + return ""; //$NON-NLS-1$ + } + + private String formatJavaElementMessage(IJavaElement element) { + return JavaElementLabels.getElementLabel(element, LABEL_FLAGS); + } + + private String formatResourceMessage(IResource element) { + IContainer parent = element.getParent(); + if (parent != null && parent.getType() != IResource.ROOT) + return element.getName() + JavaElementLabels.CONCAT_STRING + + parent.getFullPath().makeRelative().toString(); + else + return element.getName(); + } + +}