# HG changeset patch # User Jaroslav Tulach # Date 1213430028 -7200 # Node ID adf4440db8886de15c929d72543240878d7b0655 # Parent 935c169667a2d9e85b3907f48fbf192fc71b600b How to write extension point diff -r 935c169667a2 -r adf4440db888 samples/extensionpoint/build.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/extensionpoint/build.xml Sat Jun 14 09:53:48 2008 +0200 @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 935c169667a2 -r adf4440db888 samples/extensionpoint/nbproject/project.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/extensionpoint/nbproject/project.xml Sat Jun 14 09:53:48 2008 +0200 @@ -0,0 +1,105 @@ + + + org.netbeans.modules.ant.freeform + + + extensionpoint + + + + extensionpoint + + + + + . + UTF-8 + + + + java + src-hellodesign + UTF-8 + + + + java + src-helloworld + UTF-8 + + + + + build + + + clean + + + run + + + clean + build + + + + folder + build/api/classes + build + + + folder + build/api2.0/classes + build + + + + + + src-api + + + + src-helloworld + + + + src-hellodesign + + + build.xml + + + + + + + + + + + + + + + src-api + ../libs/dist/org-openide-util.jar + build/api/classes + 1.5 + + + src-helloworld + src-api + build/helloworld/classes + 1.5 + + + src-hellodesign + src-api + build/hellodesign/classes + 1.5 + + + + diff -r 935c169667a2 -r adf4440db888 samples/extensionpoint/src-api/org/apidesign/extensionpoint/Main.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/extensionpoint/src-api/org/apidesign/extensionpoint/Main.java Sat Jun 14 09:53:48 2008 +0200 @@ -0,0 +1,44 @@ +package org.apidesign.extensionpoint; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; +import javax.swing.JOptionPane; +import org.apidesign.extensionpoint.api.TipOfTheDay; +import org.openide.util.Lookup; + +public class Main { + public static void main(String[] args) { + for (;;) { + // BEGIN: extension.point.Query + Collection all = Lookup.getDefault().lookupAll(TipOfTheDay.class); + List arr = new ArrayList(all); + Collections.shuffle(arr); + + String msg; + String title; + int type; + if (arr.isEmpty()) { + msg = "I do not know what to say!"; + title = "No provider registered"; + type = JOptionPane.WARNING_MESSAGE; + } else { + msg = arr.get(0).sayHello(); + title = "Selected from " + arr.size() + " providers"; + type = JOptionPane.INFORMATION_MESSAGE; + } + // END: extension.point.Query + + String again = "Once Again"; + String exit = "Exit"; + String[] options = new String[] { again, exit }; + int ret = JOptionPane.showOptionDialog(null, msg, title, 0, type, null, options, exit); + + if (ret != 0) { + break; + } + } + System.exit(0); + } +} diff -r 935c169667a2 -r adf4440db888 samples/extensionpoint/src-api/org/apidesign/extensionpoint/api/TipOfTheDay.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/extensionpoint/src-api/org/apidesign/extensionpoint/api/TipOfTheDay.java Sat Jun 14 09:53:48 2008 +0200 @@ -0,0 +1,8 @@ +// BEGIN: extension.point.Tip +package org.apidesign.extensionpoint.api; + +public interface TipOfTheDay { + public String sayHello(); +} +// END: extension.point.Tip + diff -r 935c169667a2 -r adf4440db888 samples/extensionpoint/src-hellodesign/META-INF/services/org.apidesign.extensionpoint.api.TipOfTheDay --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/extensionpoint/src-hellodesign/META-INF/services/org.apidesign.extensionpoint.api.TipOfTheDay Sat Jun 14 09:53:48 2008 +0200 @@ -0,0 +1,1 @@ +org.apidesign.extensionpoint.impl1.HelloDesign diff -r 935c169667a2 -r adf4440db888 samples/extensionpoint/src-hellodesign/org/apidesign/extensionpoint/impl1/HelloDesign.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/extensionpoint/src-hellodesign/org/apidesign/extensionpoint/impl1/HelloDesign.java Sat Jun 14 09:53:48 2008 +0200 @@ -0,0 +1,9 @@ +package org.apidesign.extensionpoint.impl1; + +import org.apidesign.extensionpoint.api.TipOfTheDay; + +public class HelloDesign implements TipOfTheDay{ + public String sayHello() { + return "Hello API Design!"; + } +} diff -r 935c169667a2 -r adf4440db888 samples/extensionpoint/src-helloworld/META-INF/services/org.apidesign.extensionpoint.api.TipOfTheDay --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/extensionpoint/src-helloworld/META-INF/services/org.apidesign.extensionpoint.api.TipOfTheDay Sat Jun 14 09:53:48 2008 +0200 @@ -0,0 +1,3 @@ +# BEGIN: extension.point.Reg2 +org.apidesign.extensionpoint.impl2.HelloWorld +# END: extension.point.Reg2 diff -r 935c169667a2 -r adf4440db888 samples/extensionpoint/src-helloworld/org/apidesign/extensionpoint/impl2/HelloWorld.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/extensionpoint/src-helloworld/org/apidesign/extensionpoint/impl2/HelloWorld.java Sat Jun 14 09:53:48 2008 +0200 @@ -0,0 +1,12 @@ +// BEGIN: extension.point.Impl2 +package org.apidesign.extensionpoint.impl2; + +import org.apidesign.extensionpoint.api.TipOfTheDay; + + +public class HelloWorld implements TipOfTheDay { + public String sayHello() { + return "Hello World!"; + } +} +// END: extension.point.Impl2