public void start() {
slTracker =
new ServiceTracker(Activator.getTargetBC(),
StartLevel.class.getName(), null);
slTracker.open();
pkgTracker =
new ServiceTracker(Activator.getTargetBC(),
PackageAdmin.class.getName(), null);
pkgTracker.open();
lfManager = new LFManager();
lfManager.init();
consoleSwing = new ConsoleSwing(Activator.getTargetBC());
consoleSwing.start();
toolBar = makeToolBar();
statusBar = new StatusBar("");
String rName = Activator.remoteHost;
String spid = Activator.getBC().getProperty("org.osgi.provisioning.spid");
if(spid == null) {
spid = "";
}
try {
ToolTipManager.sharedInstance().setInitialDelay(50);
} catch (Exception e) {
Activator.log.warn("Failed to change tooltip manager", e);
}
frame = new JFrame(Strings.fmt("frame_title", rName, spid));
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
stopFramework();
}
});
// If running on Mac OS, create eawt Application to catch Mac OS
// quit and about events
if(bMacOS) {
try {
OSXAdapter.setQuitHandler(this,
getClass().getDeclaredMethod("stopFramework",
(Class[])null));
OSXAdapter.setAboutHandler(this,
getClass().getDeclaredMethod("showVersion",
(Class[])null));
} catch (Exception e) {
Activator.log.warn("Error while loading the OSXAdapter", e);
bMacOS = false;
}
}
contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
SizeSaver ss = new SizeSaver("top", new Dimension(900, 600), -1);
ss.attach(frame);
sizesavers.add(ss);
bundlePanel = new JCardPane();
// bundlePanel.setPreferredSize(new Dimension(400, 300));
toolBar = makeToolBar();
detailPanel = new JTabbedPane();
// detailPanel.setPreferredSize(new Dimension(400, 300));
detailPanel.setTabPlacement(JTabbedPane.BOTTOM);
detailPanel.setBorder(null);
detailPanel.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
for(Iterator it = detailMap.keySet().iterator(); it.hasNext();) {
ServiceReference sr = (ServiceReference)it.next();
Object obj = detailMap.get(sr);
if(obj instanceof DefaultSwingBundleDisplayer) {
((DefaultSwingBundleDisplayer)obj).setTabSelected();
}
}
}
});
// displayHTML = new BundleInfoDisplayerHTML(this);
contentPane.add(toolBar, BorderLayout.NORTH);
contentPane.add(statusBar, BorderLayout.SOUTH);
splitPaneHoriz = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
bundlePanel,
detailPanel);
ss = new SizeSaver("splitPaneHoriz",
null, // new Dimension(700, 400),
350);
ss.attach(splitPaneHoriz);
sizesavers.add(ss);
// splitPaneHoriz.setDividerLocation(bundlePanel.getPreferredSize().width);
splitPaneHoriz.setOneTouchExpandable(false);
JFloatable consoleWrapper =
new JFloatable(consoleSwing.getJComponent(), "Console");
splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT,
splitPaneHoriz,
consoleWrapper);
ss = new SizeSaver("splitPaneVertical",
null, // new Dimension(800, 600),
300);
ss.attach(splitPane);
sizesavers.add(ss);
// splitPane.setDividerLocation(300);
splitPane.setOneTouchExpandable(false);
contentPane.add(splitPane, BorderLayout.CENTER);
DropTarget dt =
new DropTarget(contentPane,
DnDConstants.ACTION_COPY_OR_MOVE, // actions
this,
true);
alive = true;
// Catch up the set of bundles; no need to call bundleChanged for
// each bundle since that method ignores the actual event!
// Bundle[] bl = Activator.getTargetBCbundles();
// for(int i = 0; i < bl.length; i++) {
// bundleChanged(new BundleEvent(BundleEvent.INSTALLED, bl[i]));
// }
bundleChanged((BundleEvent) null);
pm = new PackageManager(pkgTracker);
frame.setJMenuBar(menuBar = makeMenuBar());
setRemote(Activator.remoteTracker.getService() != null);
setIcon(frame, "/kf-");
// frame.pack() not used since SizeSaver(frame) does a setSize()
// frame.pack();
frame.setVisible(true);
frame.toFront();
// String dispFilter1 =
// "(&" +
// "(" + Constants.OBJECTCLASS + "=" +
// SwingBundleDisplayer.class.getName() +
// ")" +
// "(" + SwingBundleDisplayer.PROP_ISDETAIL + "=false" + ")" +
// ")";
String dispFilter =
"(" + Constants.OBJECTCLASS + "=" +
SwingBundleDisplayer.class.getName() +
")";
try {
dispTracker =
new ServiceTracker(Activator.getBC(),
Activator.getBC().createFilter(dispFilter),
null)
{
public Object addingService(final ServiceReference sr) {
final SwingBundleDisplayer disp =