Initial commit of Matt's measurement add-in for OpenOffice.org Calc.
[measurements/measurements.git] / src / net / mattmccutchen / addins / AddInBase.java
1 package net.mattmccutchen.addins;
2
3 import java.util.*;
4
5 import com.sun.star.sheet.*;
6
7 public class AddInBase<AH extends AddInHelper>
8                 extends LocalizableBase<AH> implements XAddIn {
9         private static final String addInFunctionCategory = "Add-In";
10         private static final String ERROR = "ERROR";
11         
12         protected AddInBase(AH sh, Collection<FunctionInfo> funcInfos) {
13                 super(sh);
14                 
15                 funcsByPname = new LinkedHashMap<String, FunctionInfo>();
16                 funcsByDname = new LinkedHashMap<String, FunctionInfo>();
17                 for (FunctionInfo fi : funcInfos) {
18                         funcsByPname.put(fi.programmaticName, fi);
19                         funcsByDname.put(fi.displayName, fi);
20                 }
21         }
22         
23         private final Map<String, FunctionInfo> funcsByPname;
24         private final Map<String, FunctionInfo> funcsByDname;
25
26         public String getArgumentDescription(String fpname, int aindex) {
27                 FunctionInfo fi = funcsByPname.get(fpname);
28                 return (fi != null && aindex >= 0 && aindex < fi.arguments.size())
29                         ? fi.arguments.get(aindex).description : ERROR;
30         }
31
32         public String getDisplayArgumentName(String fpname, int aindex) {
33                 FunctionInfo fi = funcsByPname.get(fpname);
34                 return (fi != null && aindex >= 0 && aindex < fi.arguments.size())
35                         ? fi.arguments.get(aindex).displayName : ERROR;
36         }
37
38         public String getDisplayCategoryName(String fpname) {
39                 return addInFunctionCategory;
40         }
41
42         public String getDisplayFunctionName(String fpname) {
43                 FunctionInfo fi = funcsByPname.get(fpname);
44                 return (fi != null) ? fi.displayName : ERROR;
45         }
46
47         public String getFunctionDescription(String fpname) {
48                 FunctionInfo fi = funcsByPname.get(fpname);
49                 return (fi != null) ? fi.description : ERROR;
50         }
51
52         public String getProgrammaticCategoryName(String fpname) {
53                 return addInFunctionCategory;
54         }
55
56         public String getProgrammaticFuntionName(String fdname) {
57                 FunctionInfo fi = funcsByDname.get(fdname);
58                 return (fi != null) ? fi.programmaticName : ERROR;
59         }
60 }