use of com.codename1.ui.util.xml.Theme in project CodenameOne by codenameone.
the class LiveDemo method start.
public void start() {
Form previewForm = new Form("Preview Theme");
Toolbar tb = new Toolbar();
previewForm.setToolbar(tb);
tb.setTitle("Preview Theme");
tb.addMaterialCommandToSideMenu("Side Command", FontImage.MATERIAL_HELP, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
ToastBar.showErrorMessage("Unmapped....");
}
});
tb.addMaterialCommandToOverflowMenu("Overflow Command", FontImage.MATERIAL_HELP, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
ToastBar.showErrorMessage("Unmapped....");
}
});
tb.addMaterialCommandToRightBar("", FontImage.MATERIAL_HELP, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
ToastBar.showErrorMessage("Unmapped....");
}
});
previewForm.setLayout(new BorderLayout());
Container first = new Container(new BoxLayout(BoxLayout.Y_AXIS));
first.addComponent(new Label("This is a Label"));
first.addComponent(new Button("This is a Button"));
MultiButton mb = new MultiButton("This is a MultiButton");
mb.setTextLine2("Second line of text");
FontImage.setMaterialIcon(mb, FontImage.MATERIAL_HELP);
first.addComponent(mb);
TextField txt = new TextField();
txt.setHint("This is a TextField");
first.addComponent(txt);
first.addComponent(new CheckBox("This is a CheckBox"));
RadioButton rb1 = new RadioButton("This is a Radio Button 1");
rb1.setGroup("group");
first.addComponent(rb1);
RadioButton rb2 = new RadioButton("This is a Radio Button 2");
rb2.setGroup("group");
first.addComponent(rb2);
final Slider s = new Slider();
s.setText("50%");
s.setProgress(50);
s.setEditable(true);
s.setRenderPercentageOnTop(true);
first.addComponent(s);
Button b1 = new Button("Show a Dialog");
b1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
Dialog.show("Dialog Title", "Dialog Body", "Ok", "Cancel");
}
});
first.addComponent(b1);
previewForm.add(BorderLayout.CENTER, first);
previewForm.show();
}
use of com.codename1.ui.util.xml.Theme in project CodenameOne by codenameone.
the class ResourceEditorView method importResourceStream.
public void importResourceStream(InputStream is) throws IOException {
EditableResources r = new EditableResources();
r.openFile(is);
checkDuplicateResourcesLoop(r, loadedResources.getThemeResourceNames(), r.getThemeResourceNames(), "Rename Theme", "Theme ");
// load all the themes so rename will work properly on images and won't conflict
for (String t : r.getThemeResourceNames()) {
r.getTheme(t);
}
checkDuplicateResourcesLoop(r, loadedResources.getImageResourceNames(), r.getImageResourceNames(), "Rename Image", "Image ");
checkDuplicateResourcesLoop(r, loadedResources.getL10NResourceNames(), r.getL10NResourceNames(), "Rename Localization", "Localization ");
checkDuplicateResourcesLoop(r, loadedResources.getDataResourceNames(), r.getDataResourceNames(), "Rename Data", "Data ");
checkDuplicateResourcesLoop(r, loadedResources.getUIResourceNames(), r.getUIResourceNames(), "Rename GUI", "GUI ");
checkDuplicateResourcesLoop(r, loadedResources.getFontResourceNames(), r.getFontResourceNames(), "Rename Font", "Font ");
for (String s : r.getImageResourceNames()) {
if (r.isMultiImage(s)) {
loadedResources.setMultiImage(s, (EditableResources.MultiImage) r.getResourceObject(s));
} else {
loadedResources.setImage(s, r.getImage(s));
}
}
for (String s : r.getL10NResourceNames()) {
loadedResources.setL10N(s, (Hashtable) r.getResourceObject(s));
}
for (String s : r.getDataResourceNames()) {
loadedResources.setData(s, (byte[]) r.getResourceObject(s));
}
for (String s : r.getUIResourceNames()) {
loadedResources.setUi(s, (byte[]) r.getResourceObject(s));
}
for (String s : r.getFontResourceNames()) {
loadedResources.setFont(s, r.getFont(s));
}
for (String s : r.getThemeResourceNames()) {
loadedResources.setTheme(s, r.getTheme(s));
}
}
use of com.codename1.ui.util.xml.Theme in project CodenameOne by codenameone.
the class ResourceEditorView method addNewFontWizard.
/**
* Invoked by the "..." button in the add theme entry dialog, allows us to add
* a font on the fly while working on a theme
*/
public void addNewFontWizard() {
AddResourceDialog addResource = new AddResourceDialog(loadedResources, AddResourceDialog.FONT);
if (JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog(mainPanel, addResource, "Add Font", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)) {
if (addResource.checkName(loadedResources)) {
JOptionPane.showMessageDialog(mainPanel, "A resource with that name already exists", "Add Font", JOptionPane.ERROR_MESSAGE);
addNewFontWizard();
return;
}
// show the image editing dialog...
FontEditor font = new FontEditor(loadedResources, new EditorFont(com.codename1.ui.Font.createSystemFont(com.codename1.ui.Font.FACE_SYSTEM, com.codename1.ui.Font.STYLE_PLAIN, com.codename1.ui.Font.SIZE_MEDIUM), null, "Arial-plain-12", true, RenderingHints.VALUE_TEXT_ANTIALIAS_ON, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.,;:!/\\*()[]{}|#$%^&<>?'\"+- "), addResource.getResourceName());
font.setFactoryCreation(true);
if (JOptionPane.OK_OPTION == JOptionPane.showConfirmDialog(mainPanel, font, "Add Font", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE)) {
loadedResources.setFont(addResource.getResourceName(), font.createFont());
}
}
}
use of com.codename1.ui.util.xml.Theme in project CodenameOne by codenameone.
the class ResourceEditorView method removeImageOrAnimation.
private void removeImageOrAnimation(String resourceToRemove) {
Object resourceValue = loadedResources.getImage(resourceToRemove);
if (!loadedResources.isOverrideMode()) {
for (String themeName : loadedResources.getThemeResourceNames()) {
Hashtable theme = loadedResources.getTheme(themeName);
if (theme.values().contains(resourceValue)) {
JOptionPane.showMessageDialog(mainPanel, "Image is in use by the theme" + "\nYou must remove it from the theme first", "Image In Use", JOptionPane.ERROR_MESSAGE);
return;
}
// we need to check the existance of image borders to replace images there...
for (Object v : theme.values()) {
if (v instanceof Border) {
Border b = (Border) v;
// BORDER_TYPE_IMAGE
if (Accessor.getType(b) == 8) {
com.codename1.ui.Image[] images = Accessor.getImages(b);
for (int i = 0; i < images.length; i++) {
if (images[i] == resourceValue) {
JOptionPane.showMessageDialog(mainPanel, "Image is in use by the theme in a border" + "\nYou must remove it from the theme first", "Image In Use", JOptionPane.ERROR_MESSAGE);
return;
}
}
}
}
}
}
// check if a timeline is making use of said image and replace it
for (String image : loadedResources.getImageResourceNames()) {
com.codename1.ui.Image current = loadedResources.getImage(image);
if (current instanceof com.codename1.ui.animations.Timeline) {
com.codename1.ui.animations.Timeline time = (com.codename1.ui.animations.Timeline) current;
for (int iter = 0; iter < time.getAnimationCount(); iter++) {
com.codename1.ui.animations.AnimationObject o = time.getAnimation(iter);
if (AnimationAccessor.getImage(o) == resourceValue) {
JOptionPane.showMessageDialog(mainPanel, "Image is in use by a timeline: " + image, "Image In Use", JOptionPane.ERROR_MESSAGE);
return;
}
}
}
}
if (isInUse(loadedResources.getImage(resourceToRemove))) {
JOptionPane.showMessageDialog(mainPanel, "Image is in use in the resource file", "Image In Use", JOptionPane.ERROR_MESSAGE);
return;
}
}
removeSelection(resourceToRemove);
imageList.refresh();
imageListMain.refresh();
imageListSVG.refresh();
imageListMulti.refresh();
imageListTimeline.refresh();
}
use of com.codename1.ui.util.xml.Theme in project CodenameOne by codenameone.
the class ResourceEditorView method imageBorderWizardMenuItemActionPerformed.
// GEN-LAST:event_addImageTimelineActionPerformed
private void imageBorderWizardMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
// GEN-FIRST:event_imageBorderWizardMenuItemActionPerformed
String themeName = null;
if (selectedResource != null) {
Object o = loadedResources.getResourceObject(selectedResource);
if (!(o instanceof Hashtable)) {
JOptionPane.showMessageDialog(mainPanel, "A theme must be selected to use this feature", "Image Border Wizard", JOptionPane.ERROR_MESSAGE);
return;
}
themeName = selectedResource;
}
ImageBorderWizardTabbedPane iw = new ImageBorderWizardTabbedPane(loadedResources, themeName);
JDialog dlg = new JDialog(SwingUtilities.windowForComponent(mainPanel), "Border Wizard");
dlg.setLayout(new java.awt.BorderLayout());
dlg.add(java.awt.BorderLayout.CENTER, iw);
dlg.pack();
dlg.setLocationRelativeTo(mainPanel);
dlg.setModal(true);
dlg.setVisible(true);
setSelectedResource(selectedResource);
}
Aggregations