Skip to content

Instantly share code, notes, and snippets.

@tofi86
Created January 24, 2014 15:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tofi86/8599046 to your computer and use it in GitHub Desktop.
Save tofi86/8599046 to your computer and use it in GitHub Desktop.
Custom Toolbar and Button for oXygen XML Editor
package de.mediaversal.oxygen.CustomButton;
import ro.sync.exml.plugin.Plugin;
import ro.sync.exml.plugin.PluginDescriptor;
/**
* CustomButton demo
*
* @author tofi86
* @created 2014-01-24
*/
public class CustomButtonPlugin extends Plugin {
/**
* The static plugin instance.
*/
private static CustomButtonPlugin instance = null;
/**
* Constructs the plugin.
*
* @param descriptor The plugin descriptor
*/
public CustomButtonPlugin(PluginDescriptor descriptor) {
super(descriptor);
if (instance != null) {
throw new IllegalStateException("Already instantiated!");
}
instance = this;
}
/**
* Get the plugin instance.
*
* @return the shared plugin instance.
*/
public static CustomButtonPlugin getInstance() {
return instance;
}
}
package de.mediaversal.oxygen.CustomButton;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import ro.sync.exml.plugin.workspace.WorkspaceAccessPluginExtension;
import ro.sync.exml.workspace.api.standalone.StandalonePluginWorkspace;
import ro.sync.exml.workspace.api.standalone.ToolbarComponentsCustomizer;
import ro.sync.exml.workspace.api.standalone.ToolbarInfo;
public class CustomButtonPluginExtension implements WorkspaceAccessPluginExtension {
@Override
public void applicationStarted(final StandalonePluginWorkspace pluginWorkspaceAccess) {
// add new toolbar
pluginWorkspaceAccess.addToolbarComponentsCustomizer(new ToolbarComponentsCustomizer() {
@Override
public void customizeToolbar(final ToolbarInfo toolbarInfo) {
// if toolbar is our custom toolbar (referenced by ID in plugin.xml)
if (toolbarInfo.getToolbarID().equals("CustomToolbar")) {
JButton demoButton = new JButton("Demo Button");
demoButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(
new JFrame(),
"Toolbar ID: " + toolbarInfo.getToolbarID(),
"Window Title",
JOptionPane.INFORMATION_MESSAGE
);
}
});
// Add demoButton to toolbar
List<JComponent> comps = new ArrayList<JComponent>();
comps.add(demoButton);
toolbarInfo.setComponents(comps.toArray(new JComponent[0]));
// Set toolbar title
toolbarInfo.setTitle("Custom Demo Toolbar");
}
}
});
}
@Override
public boolean applicationClosing() {
// 'true' if plugin allows application close
return true;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plugin SYSTEM "../plugin.dtd">
<plugin
id="de.mediaversal.oxygen.CustomButton"
name="Custom Button for oXygen"
description="Adds a custom toolbar and a button"
version="1.0.0"
vendor="mediaversal"
class="de.mediaversal.oxygen.CustomButton.CustomButtonPlugin"
classLoaderType="preferReferencedResources">
<runtime>
<library name="lib/CustomButton.jar"/>
</runtime>
<extension type="WorkspaceAccess" class="de.mediaversal.oxygen.CustomButton.CustomButtonPluginExtension"/>
<!--The sample toolbar which will present messages from the sample plugin.-->
<toolbar id="CustomToolbar" initialSide="NORTH" initialRow="1"/>
</plugin>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment