| /******************************************************************************* |
| * Copyright (c) 2004, 2008 IBM Corporation and Others |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Kentarou FUKUDA - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.actf.visualization.engines.blind.html.ui.elementViewer; |
| |
| import java.util.List; |
| |
| import org.eclipse.actf.mediator.Mediator; |
| import org.eclipse.actf.model.IModelService; |
| import org.eclipse.actf.model.IWebBrowserACTF; |
| import org.eclipse.actf.visualization.engines.blind.BlindVizEnginePlugin; |
| import org.eclipse.jface.viewers.ArrayContentProvider; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.DisposeEvent; |
| import org.eclipse.swt.events.DisposeListener; |
| import org.eclipse.swt.events.MouseAdapter; |
| import org.eclipse.swt.events.MouseEvent; |
| import org.eclipse.swt.events.SelectionAdapter; |
| import org.eclipse.swt.events.SelectionEvent; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.layout.GridLayout; |
| import org.eclipse.swt.widgets.Button; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.swt.widgets.TabFolder; |
| import org.eclipse.swt.widgets.TabItem; |
| import org.eclipse.ui.plugin.AbstractUIPlugin; |
| |
| |
| public class ViewerPanelJFace implements IViewerPanel { |
| private Shell shell; |
| |
| private List idList; |
| |
| private IHighlightElementListener prb; |
| |
| private ElementViewerJFace idViewer; |
| |
| private ElementViewerJFace akeyViewer; |
| |
| private ElementViewerJFace classViewer; |
| |
| private CSSViewer cssViewer; |
| |
| private boolean isDisposed = false; |
| |
| public ViewerPanelJFace(Shell _shell, VisualizeStyleInfo styleInfo, IHighlightElementListener _prb) { |
| |
| if (styleInfo == null) { |
| styleInfo = new VisualizeStyleInfo(); |
| idList = null; |
| } else { |
| idList = styleInfo.getOrigIdList(); |
| } |
| |
| prb = _prb; |
| shell = new Shell(_shell, SWT.MIN | SWT.MAX | SWT.RESIZE | SWT.CLOSE); |
| shell.setLayout(new GridLayout()); |
| |
| shell.setText(TITLE_NAME); |
| //TODO |
| shell.setImage(AbstractUIPlugin.imageDescriptorFromPlugin(BlindVizEnginePlugin.PLUGIN_ID, "icons/excla_squ.png").createImage()); |
| |
| shell.setLocation(100, 100); |
| |
| Composite composite = new Composite(shell, SWT.NULL); |
| composite.setLayoutData(new GridData(GridData.FILL_BOTH)); |
| GridLayout gridLayout1 = new GridLayout(); |
| gridLayout1.numColumns = 1; |
| composite.setLayout(gridLayout1); |
| |
| TabFolder viewerFolder = new TabFolder(composite, SWT.NULL); |
| GridData gridData = new GridData(GridData.FILL_BOTH); |
| // gridData.heightHint = 300; |
| viewerFolder.setLayoutData(gridData); |
| |
| TabItem tabItemEle = new TabItem(viewerFolder, SWT.NULL); |
| tabItemEle.setText(ID_TAB_TITLE); |
| idViewer = new ElementViewerJFace(viewerFolder, prb); |
| |
| idViewer.setCategoryColWidth(100); |
| idViewer.setDescColWidth(0); |
| idViewer.setContentProvider(new ArrayContentProvider()); |
| idViewer.setLabelProvider(new ElementLabelAndColorProvider()); |
| idViewer.setElementList(idList); |
| tabItemEle.setControl(idViewer.getComposite()); |
| |
| TabItem tabItemAKey = new TabItem(viewerFolder, SWT.NULL); |
| tabItemAKey.setText(ACCESSKEY_TAB_TITLE); |
| akeyViewer = new ElementViewerJFace(viewerFolder, prb); |
| akeyViewer.setCategoryColWidth(0); |
| akeyViewer.setDescColWidth(150); |
| akeyViewer.setContentProvider(new ArrayContentProvider()); |
| akeyViewer.setLabelProvider(new ElementLabelAndColorProvider()); |
| akeyViewer.setElementList(styleInfo.getAccesskeyList()); |
| tabItemAKey.setControl(akeyViewer.getComposite()); |
| |
| TabItem tabItemClass = new TabItem(viewerFolder, SWT.NULL); |
| tabItemClass.setText(CLASS_TAB_TITLE); |
| classViewer = new ElementViewerJFace(viewerFolder, prb); |
| classViewer.setCategoryColWidth(0); |
| classViewer.setDescColWidth(0); |
| classViewer.setContentProvider(new ArrayContentProvider()); |
| classViewer.setLabelProvider(new ElementLabelAndColorProvider()); |
| classViewer.setElementList(styleInfo.getClassList()); |
| tabItemClass.setControl(classViewer.getComposite()); |
| |
| TabItem tabItemCss = new TabItem(viewerFolder, SWT.NULL); |
| tabItemCss.setText(CSS_TAB_TITLE); |
| cssViewer = new CSSViewer(viewerFolder); |
| cssViewer.setCssSet(styleInfo.getImportedCssSet()); |
| tabItemCss.setControl(cssViewer.getCompositeCss()); |
| |
| viewerFolder.addSelectionListener(new SelectionAdapter() { |
| public void widgetSelected(SelectionEvent event) { |
| if (idList != null) { |
| recoveryHighlight(); |
| } |
| } |
| }); |
| |
| Button closeButton = new Button(composite, SWT.NULL); |
| closeButton.setText(CLOSE_BUTTON); |
| gridData = new GridData(GridData.HORIZONTAL_ALIGN_END); |
| closeButton.setLayoutData(gridData); |
| closeButton.addMouseListener(new MouseAdapter() { |
| public void mouseUp(MouseEvent e) { |
| shell.dispose(); |
| } |
| }); |
| |
| //TODO move to manager? |
| shell.addDisposeListener(new DisposeListener() { |
| public void widgetDisposed(DisposeEvent arg0) { |
| if (null != idList) { |
| recoveryHighlight(); |
| } |
| //prb.setViewerPanel(null); |
| isDisposed = true; |
| } |
| }); |
| |
| shell.setSize(450, 420); |
| |
| shell.open(); |
| |
| } |
| |
| private void recoveryHighlight(){ |
| IModelService dataSource = Mediator.getInstance().getActiveModelService(); |
| |
| if(dataSource != null &&dataSource instanceof IWebBrowserACTF){ |
| ((IWebBrowserACTF)dataSource).recoveryHighlight(); |
| } |
| prb.clearHighlight(); |
| } |
| |
| public void asyncUpdateValue(VisualizeStyleInfo styleInfo) { |
| final VisualizeStyleInfo _styleInfo = styleInfo; |
| shell.getDisplay().asyncExec(new Thread() { |
| public void run() { |
| idList = _styleInfo.getOrigIdList(); |
| idViewer.setElementList(idList); |
| akeyViewer.setElementList(_styleInfo.getAccesskeyList()); |
| classViewer.setElementList(_styleInfo.getClassList()); |
| cssViewer.setCssSet(_styleInfo.getImportedCssSet()); |
| } |
| }); |
| } |
| |
| public void forceActive() { |
| shell.setMinimized(false); |
| shell.setVisible(true); |
| shell.forceActive(); |
| } |
| |
| public void hide() { |
| shell.setVisible(false); |
| } |
| |
| public boolean isDisposed() { |
| return isDisposed; |
| } |
| |
| } |