Initial commit of Matt's measurement add-in for OpenOffice.org Calc.
[measurements/measurements.git] / src / net / mattmccutchen / addins / AddInBase.java
CommitLineData
3f5430db
MM
1package net.mattmccutchen.addins;
2
3import java.util.*;
4
5import com.sun.star.sheet.*;
6
7public 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}