Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 346172 | Differences between
and this patch

Collapse All | Expand All

(-)META-INF/sapphire-extension.xml (+51 lines)
Lines 12-17 Link Here
12
 *    Konstantin Komissarchik - initial implementation and ongoing maintenance
12
 *    Konstantin Komissarchik - initial implementation and ongoing maintenance
13
 *    Gregory Amerson - [358295] Need access to selection in list property editor
13
 *    Gregory Amerson - [358295] Need access to selection in list property editor
14
 *    Gregory Amerson - [377136] Add Sapphire.Diagram.Node to possible contexts for Sapphire.Add  
14
 *    Gregory Amerson - [377136] Add Sapphire.Diagram.Node to possible contexts for Sapphire.Add  
15
 *    Gregory Amerson - [346172] [diagram] Add print, zoom, save as image actions  
15
 ******************************************************************************
16
 ******************************************************************************
16
-->
17
-->
17
18
Lines 216-221 Link Here
216
        <group>Sapphire.Diagram.Appearance</group>       
217
        <group>Sapphire.Diagram.Appearance</group>       
217
    </action>
218
    </action>
218
    <action>
219
    <action>
220
        <id>Sapphire.Diagram.Zoom.In</id>
221
        <label>zoom In</label>
222
        <image>org/eclipse/sapphire/ui/actions/ZoomIn.gif</image>
223
        <description>Zoom in the diagram.</description>
224
        <location>after:Sapphire.Diagram.Layout</location>
225
        <group>Sapphire.Diagram.Zoom</group>
226
        <context>Sapphire.Diagram.Editor</context>
227
        <context>Sapphire.Diagram.Header</context>
228
    </action>
229
    <action>
230
        <id>Sapphire.Diagram.Zoom.Out</id>
231
        <label>zoom out</label>
232
        <image>org/eclipse/sapphire/ui/actions/ZoomOut.gif</image>
233
        <description>Zoom out the diagram.</description>
234
        <location>after:Sapphire.Diagram.Zoom.In</location>
235
        <group>Sapphire.Diagram.Zoom</group>
236
        <context>Sapphire.Diagram.Editor</context>
237
        <context>Sapphire.Diagram.Header</context>
238
    </action>
239
    <action>
240
        <id>Sapphire.Diagram.Zoom.Actual</id>
241
        <label>zoom actual</label>
242
        <image>org/eclipse/sapphire/ui/actions/ZoomActual.gif</image>
243
        <description>Zoom the diagram to actual size.</description>
244
        <location>after:Sapphire.Diagram.Zoom.Out</location>
245
        <group>Sapphire.Diagram.Zoom</group>
246
        <context>Sapphire.Diagram.Editor</context>
247
        <context>Sapphire.Diagram.Header</context>
248
    </action>
249
    <action>
219
        <id>Sapphire.Diagram.Node.Default</id>
250
        <id>Sapphire.Diagram.Node.Default</id>
220
        <context>Sapphire.Diagram.Node</context>
251
        <context>Sapphire.Diagram.Node</context>
221
        <label>default action</label>
252
        <label>default action</label>
Lines 247-252 Link Here
247
        <location>after:Sapphire.Diagram.SelectAll</location>
278
        <location>after:Sapphire.Diagram.SelectAll</location>
248
        <group>Sapphire.Diagram.SelectAll</group>
279
        <group>Sapphire.Diagram.SelectAll</group>
249
    </action>
280
    </action>
281
    <action>
282
        <id>Sapphire.Diagram.Save.As.Image</id>
283
        <label>save as image</label>
284
        <image>org/eclipse/sapphire/ui/actions/SaveAsImage.gif</image>
285
        <description>Save the diagram as an image.</description>
286
        <location>after:Sapphire.Diagram.SelectAllNodes</location>
287
        <group>Sapphire.Diagram.Export</group>
288
        <context>Sapphire.Diagram.Editor</context>
289
        <context>Sapphire.Diagram.Header</context>
290
    </action>
291
    <action>
292
        <id>Sapphire.Diagram.Print</id>
293
        <label>Print</label>
294
        <image>org/eclipse/sapphire/ui/actions/Print.gif</image>
295
        <description>Print the diagram.</description>
296
        <location>after:Sapphire.Diagram.Save.As.Image</location>
297
        <group>Sapphire.Diagram.Export</group>
298
        <context>Sapphire.Diagram.Editor</context>
299
        <context>Sapphire.Diagram.Header</context>
300
    </action>
250
   
301
   
251
    <action-handler>
302
    <action-handler>
252
        <action>Sapphire.Browse</action>
303
        <action>Sapphire.Browse</action>
(-)src/org/eclipse/sapphire/ui/def/ActionContextRef.java (+2 lines)
Lines 7-12 Link Here
7
 *
7
 *
8
 * Contributors:
8
 * Contributors:
9
 *    Konstantin Komissarchik - initial implementation and ongoing maintenance
9
 *    Konstantin Komissarchik - initial implementation and ongoing maintenance
10
 *    Gregory Amerson - [346172] [diagram] Add print, zoom, save as image actions
10
 ******************************************************************************/
11
 ******************************************************************************/
11
12
12
package org.eclipse.sapphire.ui.def;
13
package org.eclipse.sapphire.ui.def;
Lines 55-60 Link Here
55
            SapphireActionSystem.CONTEXT_SECTION,
56
            SapphireActionSystem.CONTEXT_SECTION,
56
            SapphireActionSystem.CONTEXT_VALUE_PROPERTY_EDITOR,
57
            SapphireActionSystem.CONTEXT_VALUE_PROPERTY_EDITOR,
57
            SapphireActionSystem.CONTEXT_DIAGRAM_EDITOR,
58
            SapphireActionSystem.CONTEXT_DIAGRAM_EDITOR,
59
            SapphireActionSystem.CONTEXT_DIAGRAM_HEADER,
58
            SapphireActionSystem.CONTEXT_DIAGRAM,
60
            SapphireActionSystem.CONTEXT_DIAGRAM,
59
            SapphireActionSystem.CONTEXT_DIAGRAM_NODE,
61
            SapphireActionSystem.CONTEXT_DIAGRAM_NODE,
60
            SapphireActionSystem.CONTEXT_DIAGRAM_NODE_HIDDEN,
62
            SapphireActionSystem.CONTEXT_DIAGRAM_NODE_HIDDEN,
(-)META-INF/sapphire-extension.xml (+31 lines)
Lines 10-15 Link Here
10
 *
10
 *
11
 * Contributors:
11
 * Contributors:
12
 *    Ling Hao - initial implementation and ongoing maintenance 
12
 *    Ling Hao - initial implementation and ongoing maintenance 
13
 *    Gregory Amerson - [346172] [diagram] Add print, zoom, save as image actions
13
 ******************************************************************************
14
 ******************************************************************************
14
-->
15
-->
15
16
Lines 40-43 Link Here
40
        <context>Sapphire.Diagram.Node.Hidden</context>
41
        <context>Sapphire.Diagram.Node.Hidden</context>
41
        <context>Sapphire.Diagram.Connection.Hidden</context>
42
        <context>Sapphire.Diagram.Connection.Hidden</context>
42
    </action-handler>
43
    </action-handler>
44
    <action-handler>
45
        <action>Sapphire.Diagram.Print</action>
46
        <context>Sapphire.Diagram.Editor</context>
47
        <context>Sapphire.Diagram.Header</context>
48
        <impl>org.eclipse.sapphire.ui.swt.gef.actions.PrintDiagramActionHandler</impl>
49
    </action-handler>
50
    <action-handler>
51
        <action>Sapphire.Diagram.Save.As.Image</action>
52
        <context>Sapphire.Diagram.Editor</context>
53
        <context>Sapphire.Diagram.Header</context>
54
        <impl>org.eclipse.sapphire.ui.swt.gef.actions.SaveAsImageDiagramActionHandler</impl>
55
    </action-handler>
56
    <action-handler>
57
        <action>Sapphire.Diagram.Zoom.In</action>
58
        <context>Sapphire.Diagram.Editor</context>
59
        <context>Sapphire.Diagram.Header</context>
60
        <impl>org.eclipse.sapphire.ui.swt.gef.actions.ZoomInDiagramActionHandler</impl>
61
    </action-handler>
62
    <action-handler>
63
        <action>Sapphire.Diagram.Zoom.Out</action>
64
        <context>Sapphire.Diagram.Editor</context>
65
        <context>Sapphire.Diagram.Header</context>
66
        <impl>org.eclipse.sapphire.ui.swt.gef.actions.ZoomOutDiagramActionHandler</impl>
67
    </action-handler>
68
    <action-handler>
69
        <action>Sapphire.Diagram.Zoom.Actual</action>
70
        <context>Sapphire.Diagram.Editor</context>
71
        <context>Sapphire.Diagram.Header</context>
72
        <impl>org.eclipse.sapphire.ui.swt.gef.actions.ZoomActualDiagramActionHandler</impl>
73
    </action-handler>
43
</extension>
74
</extension>
(-)src/org/eclipse/sapphire/ui/swt/gef/actions/PrintDiagramActionHandler.java (+46 lines)
Added Link Here
1
/******************************************************************************
2
 * Copyright (c) 2012 Liferay
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *    Gregory Amerson - initial implementation
10
 ******************************************************************************/
11
12
package org.eclipse.sapphire.ui.swt.gef.actions;
13
14
import org.eclipse.gef.ui.actions.PrintAction;
15
import org.eclipse.sapphire.ui.SapphireRenderingContext;
16
import org.eclipse.sapphire.ui.diagram.SapphireDiagramActionHandler;
17
import org.eclipse.sapphire.ui.swt.gef.DiagramRenderingContext;
18
import org.eclipse.sapphire.ui.swt.gef.SapphireDiagramEditor;
19
20
/**
21
 * @author <a href="mailto:gregory.amerson@liferay.com">Gregory Amerson</a>
22
 */
23
public class PrintDiagramActionHandler extends SapphireDiagramActionHandler
24
{
25
26
    @Override
27
    public boolean canExecute( Object obj )
28
    {
29
        return true;
30
    }
31
32
    @Override
33
    protected Object run( SapphireRenderingContext context )
34
    {
35
        DiagramRenderingContext diagramContext = (DiagramRenderingContext) context;
36
        SapphireDiagramEditor diagramEditor = diagramContext.getDiagramEditor();
37
38
        if( diagramEditor != null )
39
        {
40
            new PrintAction( diagramEditor ).run();
41
        }
42
43
        return null;
44
    }
45
46
}
(-)src/org/eclipse/sapphire/ui/swt/gef/actions/SaveAsImageDiagramActionHandler.java (+130 lines)
Added Link Here
1
/******************************************************************************
2
 * Copyright (c) 2012 Liferay
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *    Gregory Amerson - initial implementation
10
 ******************************************************************************/
11
12
package org.eclipse.sapphire.ui.swt.gef.actions;
13
14
import java.io.FileOutputStream;
15
16
import org.eclipse.draw2d.IFigure;
17
import org.eclipse.draw2d.SWTGraphics;
18
import org.eclipse.draw2d.geometry.Rectangle;
19
import org.eclipse.gef.GraphicalViewer;
20
import org.eclipse.gef.LayerConstants;
21
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
22
import org.eclipse.sapphire.modeling.util.NLS;
23
import org.eclipse.sapphire.ui.SapphireRenderingContext;
24
import org.eclipse.sapphire.ui.diagram.SapphireDiagramActionHandler;
25
import org.eclipse.sapphire.ui.swt.gef.DiagramRenderingContext;
26
import org.eclipse.sapphire.ui.swt.gef.SapphireDiagramEditor;
27
import org.eclipse.swt.SWT;
28
import org.eclipse.swt.graphics.GC;
29
import org.eclipse.swt.graphics.Image;
30
import org.eclipse.swt.graphics.ImageData;
31
import org.eclipse.swt.graphics.ImageLoader;
32
import org.eclipse.swt.widgets.Display;
33
import org.eclipse.swt.widgets.FileDialog;
34
import org.eclipse.ui.IEditorInput;
35
import org.eclipse.ui.IFileEditorInput;
36
37
/**
38
 * @author <a href="mailto:gregory.amerson@liferay.com">Gregory Amerson</a>
39
 */
40
public class SaveAsImageDiagramActionHandler extends SapphireDiagramActionHandler
41
{
42
43
    @Override
44
    public boolean canExecute( Object obj )
45
    {
46
        return true;
47
    }
48
49
    @Override
50
    protected Object run( SapphireRenderingContext context )
51
    {
52
        DiagramRenderingContext diagramContext = (DiagramRenderingContext) context;
53
        SapphireDiagramEditor diagramEditor = diagramContext.getDiagramEditor();
54
55
        if( diagramEditor != null )
56
        {
57
            FileDialog dialog = new FileDialog( context.getShell(), SWT.SAVE );
58
59
            IEditorInput editorInput = diagramEditor.getPart().adapt( IEditorInput.class );
60
61
            if( editorInput instanceof IFileEditorInput )
62
            {
63
                dialog.setFilterPath( ( (IFileEditorInput) editorInput ).getFile().getParent().getRawLocation().toOSString() );
64
            }
65
66
            dialog.setFileName( editorInput.getName().replaceAll( ".xml", ".png" ) );
67
68
            dialog.setFilterExtensions( new String[] { "*.png" } );
69
70
            dialog.setText( Resources.saveAsImageMessage );
71
72
            dialog.setOverwrite( true );
73
74
            String filePath = dialog.open();
75
76
            if( filePath == null )
77
            {
78
                return null;
79
            }
80
81
            GraphicalViewer graphicalViewer = (GraphicalViewer) diagramEditor.getAdapter( GraphicalViewer.class );
82
83
            ScalableFreeformRootEditPart rootEditPart =
84
                (ScalableFreeformRootEditPart) graphicalViewer.getRootEditPart();
85
86
            IFigure figure = rootEditPart.getLayer( LayerConstants.PRINTABLE_LAYERS );
87
88
            Rectangle rectangle = figure.getBounds();
89
90
            Image image = new Image( Display.getDefault(), rectangle.width, rectangle.height );
91
92
            GC gc = new GC( image );
93
            SWTGraphics graphics = new SWTGraphics( gc );
94
            figure.paint( graphics );
95
96
            ImageLoader loader = new ImageLoader();
97
            loader.data = new ImageData[] { image.getImageData() };
98
99
            try
100
            {
101
                final FileOutputStream output = new FileOutputStream( filePath );
102
103
                loader.save( output, SWT.IMAGE_PNG );
104
                output.flush();
105
                output.close();
106
107
                image.dispose();
108
                gc.dispose();
109
                graphics.dispose();
110
            }
111
            catch( Exception e )
112
            {
113
            }
114
115
        }
116
117
        return null;
118
    }
119
120
    private static final class Resources extends NLS
121
    {
122
        public static String saveAsImageMessage;
123
124
        static
125
        {
126
            initializeMessages( SaveAsImageDiagramActionHandler.class.getName(), Resources.class );
127
        }
128
    }
129
130
}
(-)src/org/eclipse/sapphire/ui/swt/gef/actions/SaveAsImageDiagramActionHandler.properties (+1 lines)
Added Link Here
1
saveAsImageMessage = Save as image
(-)src/org/eclipse/sapphire/ui/swt/gef/actions/ZoomActualDiagramActionHandler.java (+54 lines)
Added Link Here
1
/******************************************************************************
2
 * Copyright (c) 2012 Liferay
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *    Gregory Amerson - initial implementation
10
 ******************************************************************************/
11
12
package org.eclipse.sapphire.ui.swt.gef.actions;
13
14
import org.eclipse.gef.GraphicalViewer;
15
import org.eclipse.gef.editparts.ZoomManager;
16
import org.eclipse.sapphire.ui.SapphireRenderingContext;
17
import org.eclipse.sapphire.ui.diagram.SapphireDiagramActionHandler;
18
import org.eclipse.sapphire.ui.swt.gef.DiagramRenderingContext;
19
import org.eclipse.sapphire.ui.swt.gef.SapphireDiagramEditor;
20
21
/**
22
 * @author <a href="mailto:gregory.amerson@liferay.com">Gregory Amerson</a>
23
 */
24
public class ZoomActualDiagramActionHandler extends SapphireDiagramActionHandler
25
{
26
27
    @Override
28
    public boolean canExecute( Object obj )
29
    {
30
        return true;
31
    }
32
33
    @Override
34
    protected Object run( SapphireRenderingContext context )
35
    {
36
        DiagramRenderingContext diagramContext = (DiagramRenderingContext) context;
37
        SapphireDiagramEditor diagramEditor = diagramContext.getDiagramEditor();
38
39
        if( diagramEditor != null )
40
        {
41
            GraphicalViewer graphicalViewer = (GraphicalViewer) diagramEditor.getAdapter( GraphicalViewer.class );
42
43
            ZoomManager zoomManager = (ZoomManager) graphicalViewer.getProperty( ZoomManager.class.toString() );
44
45
            if( zoomManager != null )
46
            {
47
                zoomManager.setZoom( 1 );
48
            }
49
        }
50
51
        return null;
52
    }
53
54
}
(-)src/org/eclipse/sapphire/ui/swt/gef/actions/ZoomInDiagramActionHandler.java (+54 lines)
Added Link Here
1
/******************************************************************************
2
 * Copyright (c) 2012 Liferay
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *    Gregory Amerson - initial implementation
10
 ******************************************************************************/
11
12
package org.eclipse.sapphire.ui.swt.gef.actions;
13
14
import org.eclipse.gef.GraphicalViewer;
15
import org.eclipse.gef.editparts.ZoomManager;
16
import org.eclipse.sapphire.ui.SapphireRenderingContext;
17
import org.eclipse.sapphire.ui.diagram.SapphireDiagramActionHandler;
18
import org.eclipse.sapphire.ui.swt.gef.DiagramRenderingContext;
19
import org.eclipse.sapphire.ui.swt.gef.SapphireDiagramEditor;
20
21
/**
22
 * @author <a href="mailto:gregory.amerson@liferay.com">Gregory Amerson</a>
23
 */
24
public class ZoomInDiagramActionHandler extends SapphireDiagramActionHandler
25
{
26
27
    @Override
28
    public boolean canExecute( Object obj )
29
    {
30
        return true;
31
    }
32
33
    @Override
34
    protected Object run( SapphireRenderingContext context )
35
    {
36
        DiagramRenderingContext diagramContext = (DiagramRenderingContext) context;
37
        SapphireDiagramEditor diagramEditor = diagramContext.getDiagramEditor();
38
39
        if( diagramEditor != null )
40
        {
41
            GraphicalViewer graphicalViewer = (GraphicalViewer) diagramEditor.getAdapter( GraphicalViewer.class );
42
43
            ZoomManager zoomManager = (ZoomManager) graphicalViewer.getProperty( ZoomManager.class.toString() );
44
45
            if( zoomManager != null )
46
            {
47
                zoomManager.zoomIn();
48
            }
49
        }
50
51
        return null;
52
    }
53
54
}
(-)src/org/eclipse/sapphire/ui/swt/gef/actions/ZoomOutDiagramActionHandler.java (+54 lines)
Added Link Here
1
/******************************************************************************
2
 * Copyright (c) 2012 Liferay
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *    Gregory Amerson - initial implementation
10
 ******************************************************************************/
11
12
package org.eclipse.sapphire.ui.swt.gef.actions;
13
14
import org.eclipse.gef.GraphicalViewer;
15
import org.eclipse.gef.editparts.ZoomManager;
16
import org.eclipse.sapphire.ui.SapphireRenderingContext;
17
import org.eclipse.sapphire.ui.diagram.SapphireDiagramActionHandler;
18
import org.eclipse.sapphire.ui.swt.gef.DiagramRenderingContext;
19
import org.eclipse.sapphire.ui.swt.gef.SapphireDiagramEditor;
20
21
/**
22
 * @author <a href="mailto:gregory.amerson@liferay.com">Gregory Amerson</a>
23
 */
24
public class ZoomOutDiagramActionHandler extends SapphireDiagramActionHandler
25
{
26
27
    @Override
28
    public boolean canExecute( Object obj )
29
    {
30
        return true;
31
    }
32
33
    @Override
34
    protected Object run( SapphireRenderingContext context )
35
    {
36
        DiagramRenderingContext diagramContext = (DiagramRenderingContext) context;
37
        SapphireDiagramEditor diagramEditor = diagramContext.getDiagramEditor();
38
39
        if( diagramEditor != null )
40
        {
41
            GraphicalViewer graphicalViewer = (GraphicalViewer) diagramEditor.getAdapter( GraphicalViewer.class );
42
43
            ZoomManager zoomManager = (ZoomManager) graphicalViewer.getProperty( ZoomManager.class.toString() );
44
45
            if( zoomManager != null )
46
            {
47
                zoomManager.zoomOut();
48
            }
49
        }
50
51
        return null;
52
    }
53
54
}

Return to bug 346172