/* * #%~ * org.overture.ide.plugins.poviewer * %% * Copyright (C) 2008 - 2014 Overture * %% * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public * License along with this program. If not, see * <http://www.gnu.org/licenses/gpl-3.0.html>. * #~% */ package org.overture.ide.plugins.poviewer.view; import org.eclipse.jface.resource.FontRegistry; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.text.Document; import org.eclipse.jface.text.TextAttribute; import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.Token; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.StyleRange; import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; import org.eclipse.ui.themes.ITheme; import org.eclipse.ui.themes.IThemeManager; import org.overture.ide.core.resources.IVdmProject; import org.overture.ide.ui.editor.syntax.VdmColorProvider; import org.overture.ide.vdmsl.ui.editor.syntax.VdmSlCodeScanner; import org.overture.pog.pub.IProofObligation; public class PoTableView extends ViewPart implements ISelectionListener { protected StyledText viewer; protected final Display display = Display.getCurrent(); protected Font font = null; VdmSlCodeScanner scanner = new VdmSlCodeScanner(new VdmColorProvider()); /** * The constructor. */ public PoTableView() { IThemeManager themeManager = PlatformUI.getWorkbench().getThemeManager(); ITheme currentTheme = themeManager.getCurrentTheme(); FontRegistry fontRegistry = currentTheme.getFontRegistry(); font = fontRegistry.get(JFaceResources.TEXT_FONT); } /** * This is a callback that will allow us to create the viewer and initialize it. */ @Override public void createPartControl(Composite parent) { viewer = new StyledText(parent, SWT.WRAP | SWT.V_SCROLL|SWT.READ_ONLY); viewer.setFont(font); } /** * Passing the focus request to the viewer's control. */ @Override public void setFocus() { viewer.setFocus(); } public void setDataList(final IVdmProject project, final IProofObligation data) { display.asyncExec(new Runnable() { public void run() { viewer.setText(data.getFullPredString()); scanner.setRange(new Document(data.getFullPredString()), 0, data.getFullPredString().length()); IToken token = null; do { token = scanner.nextToken(); TextAttribute attribute = null; int start = scanner.getTokenOffset(); int length = scanner.getTokenLength(); if (token.getData() instanceof TextAttribute) { attribute = (TextAttribute) token.getData(); viewer.setStyleRange(new StyleRange(start, length, attribute.getForeground(), attribute.getBackground())); } } while (token != Token.EOF); } }); } public void selectionChanged(IWorkbenchPart part, ISelection selection) { } }