blob: 45812eee8f84702f5f2920571f9e0a9d9e7db402 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014-2018 University of York, Aston University.
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* Dimitris Kolovos - initial API and implementation
* Antonio Garcia-Dominguez - double click to see acquired/released stack traces
******************************************************************************/
package org.eclipse.epsilon.dt.epackageregistryexplorer;
import org.eclipse.epsilon.emc.emf.CachedResourceSet;
import org.eclipse.epsilon.emc.emf.CachedResourceSet.Cache;
import org.eclipse.epsilon.emc.emf.CachedResourceSet.Cache.CacheItem;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.part.ViewPart;
public class CachedResourceView extends ViewPart {
protected TableViewer cacheViewer = null;
@Override
public void createPartControl(Composite parent) {
cacheViewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
cacheViewer.setContentProvider(new CachedResourceViewerContentProvider());
cacheViewer.setLabelProvider(new CachedResoureViewerLabelProvider());
cacheViewer.setComparator(new ViewerComparator((o1, o2) -> o1.compareTo(o2)));
cacheViewer.setInput(CachedResourceSet.getCache());
cacheViewer.addDoubleClickListener(new IDoubleClickListener() {
@Override
public void doubleClick(DoubleClickEvent event) {
IStructuredSelection sel = (IStructuredSelection) event.getSelection();
CacheItem cItem = (CacheItem) sel.getFirstElement();
new CacheItemDialog(
PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(),
cItem).open();
}
});
TableColumn column = new TableColumn(cacheViewer.getTable(), SWT.FULL_SELECTION);
column.setText("Resource");
column.setWidth(300);
column = new TableColumn(cacheViewer.getTable(), SWT.FULL_SELECTION);
column.setText("Garbage-collected");
column.setWidth(120);
cacheViewer.getTable().setHeaderVisible(true);
cacheViewer.getTable().setLinesVisible(true);
IActionBars bars = getViewSite().getActionBars();
bars.getToolBarManager().add(new RefreshAction());
bars.getToolBarManager().add(new ClearAction());
}
@Override
public void setFocus() {
}
class RefreshAction extends Action {
public RefreshAction() {
this.setText("Refresh");
this.setImageDescriptor(Activator.getDefault().getImageDescriptor("icons/refresh.gif"));
}
@Override
public void run() {
cacheViewer.refresh();
}
}
class ClearAction extends Action {
public ClearAction() {
this.setText("Clear cache");
this.setImageDescriptor(Activator.getDefault().getImageDescriptor("icons/clear.gif"));
}
@Override
public void run() {
CachedResourceSet.getCache().clear();
cacheViewer.refresh();
}
}
public class CachedResoureViewerLabelProvider extends LabelProvider implements ITableLabelProvider {
protected Image image = Activator.getDefault().getImageDescriptor("icons/emfmodel.gif").createImage();
@Override
public Image getColumnImage(Object element, int columnIndex) {
if (columnIndex == 0)
return image;
return null;
}
@Override
public String getColumnText(Object element, int columnIndex) {
if (columnIndex == 0)
return ((CacheItem) element).getUri().toString();
else
return (((CacheItem) element).getResource() == null) + "";
}
}
public class CachedResourceViewerContentProvider implements IStructuredContentProvider {
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
@Override
public Object[] getElements(Object inputElement) {
return CachedResourceSet.getCache().getItems().toArray(new Cache.CacheItem[] {});
}
}
}