/******************************************************************************* * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library 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 Lesser General Public License for more * details. * * Contributors: * Gregory Amerson - initial implementation and ongoing maintenance *******************************************************************************/ package com.liferay.ide.layouttpl.ui.editor; import com.liferay.ide.layouttpl.core.model.LayoutTplElement; import com.liferay.ide.layouttpl.ui.parts.LayoutTplEditPartFactory; import com.liferay.ide.layouttpl.ui.parts.LayoutTplRootEditPart; import java.util.EventObject; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.gef.DefaultEditDomain; import org.eclipse.gef.GraphicalViewer; import org.eclipse.gef.ui.actions.ActionRegistry; import org.eclipse.gef.ui.parts.GraphicalEditor; import org.eclipse.gef.ui.parts.GraphicalViewerImpl; import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler; import org.eclipse.gef.ui.parts.SelectionSynchronizer; import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IEditorInput; /** * @author Greg Amerson * @author Cindy Li * @author Kuo Zhang * */ public class LayoutTplPreviewEditor extends GraphicalEditor { protected LayoutTplElement modelElement; public LayoutTplPreviewEditor( LayoutTplElement layoutTpl ) { this.modelElement = layoutTpl; setEditDomain( new DefaultEditDomain( this ) ); } @Override public void commandStackChanged( EventObject event ) { // do nothing } @Override protected void configureGraphicalViewer() { super.configureGraphicalViewer(); GraphicalViewer viewer = getGraphicalViewer(); viewer.setEditPartFactory( new LayoutTplEditPartFactory() ); viewer.setRootEditPart( new LayoutTplRootEditPart() ); viewer.setKeyHandler( new GraphicalViewerKeyHandler( viewer ) ); } @Override protected void createActions() { // no actions } protected void createGraphicalViewer( Composite parent ) { GraphicalViewer viewer = new GraphicalViewerImpl(); viewer.createControl( parent ); setGraphicalViewer( viewer ); configureGraphicalViewer(); hookGraphicalViewer(); initializeGraphicalViewer(); } @Override public void dispose() { super.dispose(); } @Override public void doSave( IProgressMonitor monitor ) { // do nothing } public void doSaveAs() { // do nothing } @Override public ActionRegistry getActionRegistry() { return super.getActionRegistry(); } @Override public DefaultEditDomain getEditDomain() { return super.getEditDomain(); } public LayoutTplElement getModelElement() { return modelElement; } @Override public SelectionSynchronizer getSelectionSynchronizer() { return super.getSelectionSynchronizer(); } protected void initializeGraphicalViewer() { final GraphicalViewer viewer = getGraphicalViewer(); viewer.setContents( getModelElement() ); // set the contents of this editor refreshViewer( viewer ); } @Override public boolean isDirty() { return false; } public boolean isSaveAsAllowed() { return false; } private void refreshViewer( final GraphicalViewer viewer ) { viewer.getControl().addPaintListener ( new PaintListener() { public void paintControl( PaintEvent e ) { getGraphicalViewer().getContents().refresh();// rebuild column heights if needed viewer.getControl().removePaintListener( this ); } } ); } public void refreshVisualModel( LayoutTplElement layoutTpl ) { final GraphicalViewer viewer = getGraphicalViewer(); if( viewer != null ) { viewer.setContents( layoutTpl ); refreshViewer( viewer ); } } protected void setInput( IEditorInput input ) { super.setInput( input ); setPartName( input.getName() ); } }