blob: 17cd87e5f1ab7c8e7a37ce9c515df49ff7d6679d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
/*******************************************************************************
* Copyright (c) 2006, 2015 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Andrey Loskutov <loskutov@gmx.de> - Bug 372799
******************************************************************************/
package org.eclipse.ui.internal;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.ISaveablePart;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPart2;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.Saveable;
/**
* A default {@link Saveable} implementation that wrappers a regular workbench
* part (one that does not itself adapt to Saveable).
*
* @since 3.2
*/
public class DefaultSaveable extends Saveable {
private IWorkbenchPart part;
/**
* Creates a new DefaultSaveable.
*
* @param part the part represented by this model
*/
public DefaultSaveable(IWorkbenchPart part) {
this.part = part;
}
@Override
public void doSave(IProgressMonitor monitor) {
ISaveablePart saveable = SaveableHelper.getSaveable(part);
if (saveable != null) {
saveable.doSave(monitor);
}
}
@Override
public String getName() {
if (part instanceof IWorkbenchPart2) {
return ((IWorkbenchPart2) part).getPartName();
}
return part.getTitle();
}
@Override
public ImageDescriptor getImageDescriptor() {
Image image = part.getTitleImage();
if (image == null) {
return null;
}
return ImageDescriptor.createFromImage(image);
}
@Override
public String getToolTipText() {
return part.getTitleToolTip();
}
@Override
public boolean isDirty() {
ISaveablePart saveable = SaveableHelper.getSaveable(part);
if (saveable != null) {
return saveable.isDirty();
}
return false;
}
@Override
public int hashCode() {
return part.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
final DefaultSaveable other = (DefaultSaveable) obj;
if (part == null) {
if (other.part != null)
return false;
} else if (!part.equals(other.part))
return false;
return true;
}
@Override
public boolean show(IWorkbenchPage page) {
IWorkbenchPartReference reference = page.getReference(part);
if (reference != null) {
page.activate(part);
return true;
}
if (part instanceof IViewPart) {
IViewPart viewPart = (IViewPart) part;
try {
page.showView(viewPart.getViewSite().getId(), viewPart.getViewSite().getSecondaryId(),
IWorkbenchPage.VIEW_ACTIVATE);
} catch (PartInitException e) {
return false;
}
return true;
}
return false;
}
}
|