package org.codefaces.ui.internal; import org.codefaces.core.models.RepoResource; import org.eclipse.core.runtime.IPath; import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredViewer; public class StatusManager implements ISelectionChangedListener { private static final String SEPERATOR = " - "; private IStatusLineManager statusLineManager; public StatusManager() { } public StatusManager(IStatusLineManager statusLineManager, StructuredViewer viewer) { this.statusLineManager = statusLineManager; viewer.addPostSelectionChangedListener(this); } public void showStatusMessage(IStatusLineManager statusLineManager, RepoResource resource) { if (resource == null) { statusLineManager.setMessage(null); return; } StringBuilder builder = new StringBuilder(); IPath fullPath = resource.getPath(); String repoUrl = resource.getRoot().getRepo().getUrl(); String fileName = fullPath.lastSegment(); if (fileName != null) { builder.append(fileName); } IPath folderPath = fullPath.removeLastSegments(1); String folderName = folderPath.isRoot() ? null : folderPath.toString() .substring(1); if (folderName != null) { builder.append(SEPERATOR); builder.append(folderName); } if (fileName != null || folderName != null) { builder.append(SEPERATOR); } builder.append(repoUrl); statusLineManager.setMessage(builder.toString()); } @Override public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection structuredSelection = (IStructuredSelection) event .getSelection(); Object selectedObject = structuredSelection.getFirstElement(); if (selectedObject == null) { showStatusMessage(statusLineManager, null); return; } if (selectedObject instanceof RepoResource) { showStatusMessage(statusLineManager, (RepoResource) selectedObject); } } }