Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
K
kernel
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
af3
kernel
Commits
5675118e
Commit
5675118e
authored
8 years ago
by
Vincent Aravantinos
Browse files
Options
Downloads
Patches
Plain Diff
context menu for constraints
refs 2553
parent
6b92dba4
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/ConstraintMenu.java
+180
-30
180 additions, 30 deletions
...tiss/tooling/kernel/ui/internal/views/ConstraintMenu.java
with
180 additions
and
30 deletions
org.fortiss.tooling.kernel.ui/trunk/src/org/fortiss/tooling/kernel/ui/internal/views/ConstraintMenu.java
+
180
−
30
View file @
5675118e
...
...
@@ -14,6 +14,8 @@
+-----------------------------------------------------------------------*/
package
org.fortiss.tooling.kernel.ui.internal.views
;
import
static
org
.
eclipse
.
jface
.
resource
.
ImageDescriptor
.
createFromImage
;
import
java.util.Collections
;
import
java.util.List
;
import
java.util.stream.Collectors
;
...
...
@@ -21,29 +23,41 @@ import java.util.stream.Collectors;
import
org.eclipse.emf.ecore.EObject
;
import
org.eclipse.jface.action.Action
;
import
org.eclipse.jface.action.ActionContributionItem
;
import
org.eclipse.jface.action.IAction
;
import
org.eclipse.jface.action.IContributionItem
;
import
org.eclipse.jface.action.MenuManager
;
import
org.eclipse.jface.resource.ImageDescriptor
;
import
org.eclipse.jface.viewers.DecorationOverlayIcon
;
import
org.eclipse.jface.viewers.IDecoration
;
import
org.eclipse.swt.graphics.Image
;
import
org.fortiss.tooling.kernel.model.constraints.ConstrainedWithChecksum
;
import
org.fortiss.tooling.kernel.model.constraints.ErrorVerificationStatus
;
import
org.fortiss.tooling.kernel.model.constraints.FailVerificationStatus
;
import
org.fortiss.tooling.kernel.model.constraints.IConstrained
;
import
org.fortiss.tooling.kernel.model.constraints.IConstraint
;
import
org.fortiss.tooling.kernel.model.constraints.IConstraintVerificationStatus
;
import
org.fortiss.tooling.kernel.model.constraints.OutdatedVerificationStatus
;
import
org.fortiss.tooling.kernel.model.constraints.SuccessVerificationStatus
;
import
org.fortiss.tooling.kernel.service.ICommandStackService
;
import
org.fortiss.tooling.kernel.service.IConstraintVerificationService
;
import
org.fortiss.tooling.kernel.service.IConstraintVerificationService.IFix
;
import
org.fortiss.tooling.kernel.ui.ESharedImages
;
import
org.fortiss.tooling.kernel.ui.ToolingKernelUIActivator
;
import
org.fortiss.tooling.kernel.ui.extension.IContextMenuContributor
;
import
org.fortiss.tooling.kernel.ui.extension.IModelElementHandler
;
import
org.fortiss.tooling.kernel.ui.extension.data.ContextMenuContextProvider
;
import
org.fortiss.tooling.kernel.ui.service.IConstraintVerificationUIService
;
import
org.fortiss.tooling.kernel.ui.service.IContextMenuService
;
import
org.fortiss.tooling.kernel.ui.service.IModelEditorBindingService
;
import
org.fortiss.tooling.kernel.ui.service.IModelElementHandlerService
;
/**
* The contributor for the dynamic new menu of the navigator view based on model
* element composition.
* Context menu for constraints.
*
* @author hoelzl
* @author $Author$
* @version $Rev$
* @ConQAT.Rating
GREEN
Hash: 4
9C26BBDB13EC81195004EDDE740E2C3
* @ConQAT.Rating
YELLOW
Hash: 4
80E689337B14B883F1AA3967CA73AEC
*/
public
class
ConstraintMenu
implements
IContextMenuContributor
{
...
...
@@ -55,60 +69,196 @@ public class ConstraintMenu implements IContextMenuContributor {
return
Collections
.
emptyList
();
}
return
((
IConstrained
)
selectedObject
).
getConstraints
().
stream
()
.
filter
(
c
->
c
.
getVerificationStatus
()
instanceof
Outdated
VerificationStatus
)
.
map
(
c
->
new
ActionContributionItem
(
new
CheckOutdatedConstraintAction
(
c
)
))
.
filter
(
c
->
!(
c
.
getVerificationStatus
()
instanceof
Success
VerificationStatus
)
)
.
map
(
c
->
constraintToAction
(
c
,
(
IConstrained
)
selectedObject
))
.
collect
(
Collectors
.
toList
());
}
/**
* @param c
* @param elt
* @return The submenu corresponding to the status of <code>c</code>. <code>elt</code> is needed
* to prevent displaying an entry to go to <code>elt</code> (not hurtful, but useless,
* since the user is already seeing it).
*/
private
IContributionItem
constraintToAction
(
IConstraint
c
,
IConstrained
elt
)
{
IConstraintVerificationStatus
status
=
c
.
getVerificationStatus
();
if
(
status
instanceof
OutdatedVerificationStatus
)
{
return
new
CheckOutdatedConstraintAction
(
c
,
elt
);
}
else
if
(
status
instanceof
FailVerificationStatus
)
{
return
new
CheckFailingConstraintAction
(
c
,
elt
);
}
else
if
(
status
instanceof
ErrorVerificationStatus
)
{
return
new
CheckErrorConstraintAction
(
c
,
elt
);
}
else
{
return
null
;
}
}
/** {@inheritDoc} */
@Override
public
String
getMenuSectionID
()
{
return
IContextMenuService
.
TOP_MOST_MENU_SECTION_ID
;
}
/** Action for creating a new prototype. */
private
static
class
CheckOutdatedConstraintAction
extends
Action
{
/** Action to "go to" a given constrained element. */
private
static
class
GoToConstrained
extends
Action
{
/** The constrained element to open. */
private
IConstrained
c
;
/** Constructor. */
public
CheckOutdatedConstraintAction
(
IConstraint
c
)
{
super
(
getName
(
c
),
getIcon
(
c
));
public
GoToConstrained
(
IConstrained
c
)
{
super
(
"Go to "
+
IModelElementHandlerService
.
INSTANCE
.
getName
(
c
),
createFromImage
(
IModelElementHandlerService
.
INSTANCE
.
getIcon
(
c
)));
this
.
c
=
c
;
}
/** Get the icon of the prototype. */
public
static
String
getName
(
IConstraint
c
)
{
/** {@inheritDoc} */
@Override
public
void
run
()
{
IModelElementHandler
<
EObject
>
handler
=
IModelElementHandlerService
.
INSTANCE
.
getModelElementHandler
(
c
);
EObject
eltToOpen
=
handler
==
null
?
c
:
handler
.
handleOpenModelElementRequest
(
c
);
IModelEditorBindingService
.
INSTANCE
.
openInEditor
(
eltToOpen
);
}
}
/** Action for creating a new prototype. */
private
static
class
ConstraintSubMenuBase
extends
MenuManager
{
/** The constraint. */
protected
IConstraint
c
;
return
handler
==
null
?
"[Outdated constraint]"
:
handler
.
getName
(
c
);
/**
* The action to get more information about the constraint status.
* The same action allows to update an outdated constraint status (there is no
* "more information" to get out of an outdated constraint); it is stored in a field to
* allow the "update" action to change the icon and the text going with it.
*/
protected
ActionContributionItem
moreInfoAction
;
/** Constructor. */
public
ConstraintSubMenuBase
(
IConstraint
c
,
IConstrained
selectedElt
,
String
prefix
,
ImageDescriptor
overlay
)
{
super
(
getName
(
c
,
prefix
),
getIcon
(
c
,
overlay
),
null
);
this
.
c
=
c
;
moreInfoAction
=
new
ActionContributionItem
(
new
OpenStatusAction
());
this
.
add
(
moreInfoAction
);
for
(
ConstrainedWithChecksum
cwc
:
c
.
getConstrainedsWithChecksum
())
{
if
(!
selectedElt
.
equals
(
cwc
.
getConstrained
()))
{
this
.
add
(
new
ActionContributionItem
(
new
GoToConstrained
(
cwc
.
getConstrained
())));
}
}
}
/** Get the icon of the prototype. */
public
static
ImageDescriptor
getIcon
(
IConstraint
c
)
{
IModelElementHandler
<
EObject
>
handler
=
IModelElementHandlerService
.
INSTANCE
.
getModelElementHandler
(
c
);
if
(
handler
==
null
)
{
return
null
;
}
Image
img
=
handler
.
getIcon
(
c
);
public
static
String
getName
(
IConstraint
c
,
String
prefix
)
{
String
name
=
IModelElementHandlerService
.
INSTANCE
.
getName
(
c
);
return
prefix
+
(
name
==
null
?
"Constraint"
:
name
);
}
/** Get the icon of the prototype. */
public
static
ImageDescriptor
getIcon
(
IConstraint
c
,
ImageDescriptor
overlay
)
{
Image
img
=
IModelElementHandlerService
.
INSTANCE
.
getIcon
(
c
);
if
(
img
==
null
)
{
return
null
;
}
ImageDescriptor
overlay
=
ESharedImages
.
WARNING_OVERLAY
.
getImageDescriptor
();
ImageDescriptor
[]
descriptors
=
new
ImageDescriptor
[
5
];
descriptors
[
IDecoration
.
BOTTOM_LEFT
]
=
overlay
;
return
new
DecorationOverlayIcon
(
img
,
descriptors
);
}
/** {@inheritDoc} */
@Override
public
void
run
()
{
// ICommandStackService.INSTANCE.runAsCommand(container, new Runnable() {
//
// @Override
// public void run() {
//
// }
// });
/** Action to update a constraint. */
protected
class
OpenStatusAction
extends
Action
{
/** Constructor. */
public
OpenStatusAction
()
{
super
(
"Get more information"
,
ToolingKernelUIActivator
.
getImageDescriptor
(
"icons/info.gif"
));
}
/** {@inheritDoc} */
@Override
public
void
run
()
{
ICommandStackService
.
INSTANCE
.
runAsCommand
(
c
,
new
Runnable
()
{
@Override
public
void
run
()
{
IConstraintVerificationUIService
.
INSTANCE
.
openStatus
(
c
.
getVerificationStatus
());
}
});
}
}
}
/** Action for creating a new prototype. */
private
static
class
CheckOutdatedConstraintAction
extends
ConstraintSubMenuBase
{
/** Constructor. */
public
CheckOutdatedConstraintAction
(
IConstraint
c
,
IConstrained
selectedElt
)
{
super
(
c
,
selectedElt
,
"Outdated constraint: "
,
ESharedImages
.
WARNING_OVERLAY
.
getImageDescriptor
());
IAction
action
=
moreInfoAction
.
getAction
();
action
.
setImageDescriptor
(
ToolingKernelUIActivator
.
getImageDescriptor
(
"icons/ok.png"
));
action
.
setText
(
"Check"
);
}
}
/** Action for creating a new prototype. */
private
static
class
CheckUnsuccessfulConstraintAction
extends
ConstraintSubMenuBase
{
/** Constructor. */
public
CheckUnsuccessfulConstraintAction
(
IConstraint
c
,
IConstrained
selectedElt
,
String
prefix
)
{
super
(
c
,
selectedElt
,
prefix
,
ESharedImages
.
ERROR_OVERLAY
.
getImageDescriptor
());
for
(
IFix
fix
:
IConstraintVerificationService
.
INSTANCE
.
fixes
(
c
.
getVerificationStatus
()))
{
this
.
add
(
new
ActionContributionItem
(
new
FixAction
(
fix
)));
}
}
/** Action to update a constraint. */
private
class
FixAction
extends
Action
{
/** The fix to achieve. */
IFix
fix
;
/** Constructor. */
public
FixAction
(
IFix
fix
)
{
super
(
fix
.
getDescription
(),
ToolingKernelUIActivator
.
getImageDescriptor
(
"icons/fix.png"
));
this
.
fix
=
fix
;
}
/** {@inheritDoc} */
@Override
public
void
run
()
{
ICommandStackService
.
INSTANCE
.
runAsCommand
(
c
,
new
Runnable
()
{
@Override
public
void
run
()
{
fix
.
runFix
(
c
.
getVerificationStatus
());
}
});
}
}
}
/** Action for creating a new prototype. */
private
static
class
CheckFailingConstraintAction
extends
CheckUnsuccessfulConstraintAction
{
/** Constructor. */
public
CheckFailingConstraintAction
(
IConstraint
c
,
IConstrained
selectedElt
)
{
super
(
c
,
selectedElt
,
"Unsatisfied constraint: "
);
}
}
/** Action for creating a new prototype. */
private
static
class
CheckErrorConstraintAction
extends
CheckUnsuccessfulConstraintAction
{
/** Constructor. */
public
CheckErrorConstraintAction
(
IConstraint
c
,
IConstrained
selectedElt
)
{
super
(
c
,
selectedElt
,
"Error while checking constraint: "
);
}
}
}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment