blob: 67603496ebf3aa8ccf6c586ed370c329c25e00fb [file] [log] [blame]
/*******************************************************************************
* 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;
}
}