(Click to expand)
Main.java
public class Main {
public static void main(String[] args) {
Phone phone = new Phone(41, "331234567");
Fax fax = new Fax("034 456 78 90");
Doo.dle(phone);
Doo.dle(fax);
Set set = new HashSet();
set.add(new TelePlugin());
DoodleDebug.addRenderingPlugins(set);
Doo.dle(phone);
Doo.dle(fax);
}
}
TelePlugin.java
public class TelePlugin extends AbstractPlugin {
private PhoneRendering phoneRendering;
private FaxRendering faxRendering;
public TelePlugin() {
this.phoneRendering = new PhoneRendering();
this.faxRendering = new FaxRendering();
}
@Override
public Set> getDrawableClasses() {
Set> set = new HashSet>();
set.add(Phone.class);
set.add(Fax.class);
return set;
}
@Override
public void render(Object object, Tag tag) throws DoodleRenderException {
if (object instanceof Phone) {
phoneRendering.render((Phone) object, tag);
} else if (object instanceof Fax) {
faxRendering.render((Fax) object, tag);
}
}
@Override
public void renderSmall(Object object, Tag tag)
throws DoodleRenderException {
if (object instanceof Phone) {
new PhoneRendering().renderSmall((Phone) object, tag);
} else if (object instanceof Fax) {
new FaxRendering().renderSmall((Fax) object, tag);
}
}
// Optional. Standard implementation returns an empty string (= no css).
@Override
public String getCSS() {
return ".TelePlugin .fax-number {background-color: #fdb} "
+ ".TelePlugin .phone-number {background-color: #cfd}";
}
}
PhoneRendering.java
public class PhoneRendering implements Rendering {
@Override
public void render(Phone phone, Tag tag) throws DoodleRenderException {
tag.add("A Phone: ");
Tag number = new Tag("span", "class=phone-number");
number.add("++" + phone.getPre());
number.add(phone.getNumber());
tag.add(number);
}
@Override
public void renderSmall(Phone phone, Tag tag) throws DoodleRenderException {
tag.add(phone.getPre() + phone.getNumber());
}
}
FaxRendering.java
public class FaxRendering implements Rendering {
@Override
public void render(Fax fax, Tag tag) throws DoodleRenderException {
tag.add("A Fax: ");
Tag number = new Tag("div", "class=fax-number");
DoodleRenderer.renderInto(fax.getNumber(), number, false);
tag.add(number);
}
@Override
public void renderSmall(Fax fax, Tag tag) throws DoodleRenderException {
tag.add(fax.getNumber());
}
}
Phone.java
public class Phone {
private int pre;
private String number;
public Phone(int pre, String number) {
this.pre = pre;
this.number = number;
}
public int getPre() {
return pre;
}
public String getNumber() {
return number;
}
}
Fax.java
public class Fax {
private String number;
public Fax(String number) {
this.number = number;
}
public String getNumber() {
return number;
}
}