]>
git.argeo.org Git - lgpl/argeo-commons.git/blob - swt/org.argeo.cms.swt/src/org/argeo/cms/swt/acr/LinkedControl.java
1 package org
.argeo
.cms
.swt
.acr
;
5 import org
.argeo
.api
.acr
.Content
;
6 import org
.argeo
.cms
.acr
.ContentUtils
;
7 import org
.argeo
.cms
.swt
.widgets
.StyledControl
;
8 import org
.eclipse
.swt
.widgets
.Composite
;
11 * A {@link StyledControl} which can link either to an internal {@link Content}
14 public abstract class LinkedControl
extends StyledControl
{
16 private static final long serialVersionUID
= -7603153425459801216L;
18 private Content linkedContent
;
21 public LinkedControl(Composite parent
, int swtStyle
) {
22 super(parent
, swtStyle
);
25 public void setLink(Content linkedContent
) {
27 throw new IllegalStateException("An URI is already set");
28 this.linkedContent
= linkedContent
;
31 public void setLink(URI uri
) {
32 if (linkedContent
!= null)
33 throw new IllegalStateException("A linked content is already set");
37 public boolean isInternalLink() {
39 throw new IllegalStateException("No link has been set");
40 return linkedContent
!= null;
43 public boolean hasLink() {
44 return plainUri
!= null || linkedContent
!= null;
47 public Content
getLinkedContent() {
51 public URI
getPlainUri() {
58 if (linkedContent
!= null)
59 return URI
.create("#" + ContentUtils
.cleanPathForUrl(linkedContent
.getPath()));