/* Copyright (C) 2006 Christian Schneider * * This file is part of Nomad. * * Nomad is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Nomad is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Nomad; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ package net.sf.nmedit.jtheme.clavia.nordmodular; import java.awt.Color; import java.awt.Font; import javax.swing.BorderFactory; import javax.swing.UIDefaults; import javax.swing.border.Border; import javax.swing.plaf.BorderUIResource; import javax.swing.plaf.ColorUIResource; import javax.swing.plaf.FontUIResource; import net.sf.nmedit.jtheme.JTCustomContext; import net.sf.nmedit.jtheme.JTPopupHandler; import net.sf.nmedit.jtheme.clavia.nordmodular.plaf.JTBasicSliderScrollbarUI; import net.sf.nmedit.jtheme.clavia.nordmodular.plaf.JTNM1KnobUI; import net.sf.nmedit.jtheme.clavia.nordmodular.plaf.JTNM1ResetButtonUI; import net.sf.nmedit.jtheme.clavia.nordmodular.plaf.JTNM1SliderUI; import net.sf.nmedit.jtheme.clavia.nordmodular.plaf.NoteSeqEditorUI; import net.sf.nmedit.jtheme.component.JTButtonControl; import net.sf.nmedit.jtheme.component.JTComponent; import net.sf.nmedit.jtheme.component.JTConnector; import net.sf.nmedit.jtheme.component.JTDisplay; import net.sf.nmedit.jtheme.component.JTImage; import net.sf.nmedit.jtheme.component.JTKnob; import net.sf.nmedit.jtheme.component.JTLabel; import net.sf.nmedit.jtheme.component.JTLight; import net.sf.nmedit.jtheme.component.JTModule; import net.sf.nmedit.jtheme.component.JTModuleContainer; import net.sf.nmedit.jtheme.component.JTSlider; import net.sf.nmedit.jtheme.component.JTTextDisplay; import net.sf.nmedit.jtheme.component.layer.DNDLayer; import net.sf.nmedit.jtheme.component.plaf.JTBasicButtonControlUI; import net.sf.nmedit.jtheme.component.plaf.JTBasicConnectorUI; import net.sf.nmedit.jtheme.component.plaf.JTBasicLightUI; import net.sf.nmedit.jtheme.component.plaf.JTButtonControlUI; import net.sf.nmedit.jtheme.component.plaf.JTDisplayUI; import net.sf.nmedit.jtheme.component.plaf.JTImageUI; import net.sf.nmedit.jtheme.component.plaf.JTLabelUI; import net.sf.nmedit.jtheme.component.plaf.JTLightUI; import net.sf.nmedit.jtheme.component.plaf.JTModuleUI; import net.sf.nmedit.jtheme.component.plaf.JTTextDisplayUI; import net.sf.nmedit.jtheme.component.plaf.mcui.JTModuleContainerUI; import net.sf.nmedit.jtheme.store.StorageContext; import net.sf.nmedit.jtheme.util.BoundingBoxBorder; import net.sf.nmedit.jtheme.util.SimpleSelectionBorder; public class JTNM1Context extends JTCustomContext { public static final String DISPLAY_SHAPE_FILL_COLOR_KEY = "display.shape.fill"; public static final String DISPLAY_SHAPE_OUTLINE_COLOR_KEY = "display.shape.outline"; public static final String DISPLAY_AXIS_COLOR_KEY = "display.axis"; public static final Color GRAPH_DISPLAY_LINE = new Color(0xC0C0C0); public static final Color GRAPH_DISPLAY_FILL = new Color(0xC0D0C0); public static final Color GRAPH_DISPLAY_FILL_LINE = new Color(0x000000); private static JTNM1Context cachedJTContext = null; public static void setCachedContext(JTNM1Context context) { cachedJTContext = context; } public static JTNM1Context getCachedContext() { return cachedJTContext; } private StorageContext stc; private JTPopupHandler popupHandler = new ControlPopupHandler(); public JTNM1Context(StorageContext stc) { //super(true, true); super(false, true); this.stc = stc; } public JTPopupHandler getPopupHandler(JTComponent c) { return popupHandler; } public void setStorageContext(StorageContext stc) { this.stc = stc; } public StorageContext getStorageContext() { return stc; } public JTNM1Context(boolean hasModuleContainerOverlay, boolean dndAllowed) { super(hasModuleContainerOverlay, dndAllowed); } protected void installComponentClassMap() { installComponentType(TYPE_MODULE, JTModule.class); installComponentType(TYPE_KNOB, JTKnob.class); installComponentType(TYPE_SLIDER, JTSlider.class); installComponentType(TYPE_LABEL, JTLabel.class); installComponentType(TYPE_IMAGE, JTImage.class); installComponentType(TYPE_CONNECTOR, JTConnector.class); installComponentType(TYPE_BUTTONS, JTButtonControl.class); installComponentType(TYPE_RESET_BUTTON, JTNM1ResetButton.class); installComponentType(TYPE_TEXTDISPLAY, JTTextDisplay.class); installComponentType(TYPE_LIGHT, JTLight.class); installComponentType("clip-display", ClipDisp.class); installComponentType("compressor-display", JTCompressorDisplay.class); installComponentType("expander-display", JTExpanderDisplay.class); installComponentType("filter-e-display", JTFilterEDisplay.class); installComponentType("filter-f-display", JTFilterFDisplay.class); installComponentType("NoteVelScaleDisplay", NoteVelScaleDisplay.class); installComponentType("eq-mid-display", JTEqMidDisplay.class); installComponentType("eq-shelving-display", JTEqShelvingDisplay.class); installComponentType("phaser-display", JTPhaserDisplay.class); installComponentType("LFODisplay", LFODisplay.class); installComponentType("multi-env-display", JTMultiEnvDisplay.class); installComponentType("note-seq-editor", NMNoteSeqEditor.class); installComponentType("vocoder-display", VocoderDisplay.class); installComponentType("wavewrap-display", WaveWrapDisp.class); installComponentType("overdrive-display", JTOverdriveDisplay.class); } @Override protected void installComponentClasses() { installComponentClass(JTLabel.class); installComponentClass(JTImage.class); //installComponentClass(JTWaldorfKnob.class); installComponentClass(JTButtonControl.class); installComponentClass(JTNM1ResetButton.class); installComponentClass(JTKnob.class); installComponentClass(JTSlider.class); installComponentClass(WaveWrapDisp.class); installComponentClass(JTEnvelopeDisplay.class); installComponentClass(ClipDisp.class); installComponentClass(LFODisplay.class); installComponentClass(NoteVelScaleDisplay.class); installComponentClass(JTEqMidDisplay.class); installComponentClass(JTEqShelvingDisplay.class); installComponentClass(JTPhaserDisplay.class); installComponentClass(JTFilterEDisplay.class); installComponentClass(JTFilterFDisplay.class); installComponentClass(NMNoteSeqEditor.class); installComponentClass(VocoderDisplay.class); installComponentClass(JTLight.class); installComponentClass(NMScrollbar.class); installComponentClass(JTOverdriveDisplay.class); } @Override protected void setDefaults(UIDefaults uidefaults) { FontUIResource baseFont = new FontUIResource("SansSerif", Font.PLAIN, 9); uidefaults.put(DISPLAY_AXIS_COLOR_KEY, new ColorUIResource(0x000000)); uidefaults.put(DISPLAY_SHAPE_FILL_COLOR_KEY, new ColorUIResource(0xC0D0C0)); uidefaults.put(DISPLAY_SHAPE_OUTLINE_COLOR_KEY, new ColorUIResource(0xC0C0C0)); uidefaults.put(JTSlider.uiClassID, JTNM1SliderUI.class.getName()); uidefaults.put(JTKnob.uiClassID, JTNM1KnobUI.class.getName()); uidefaults.put(JTNM1ResetButton.uiClassID, JTNM1ResetButtonUI.class.getName()); uidefaults.put(JTConnector.uiClassID, JTBasicConnectorUI.class.getName()); uidefaults.put(JTButtonControl.uiClassID, JTBasicButtonControlUI.class.getName()); uidefaults.put(JTButtonControlUI.BORDER_KEY, JTNM1BorderFactory.createNordEditor311RaisedButtonBorder()); uidefaults.put(JTButtonControlUI.SELECTED_BORDER_KEY, JTNM1BorderFactory.createNordEditor311LoweredButtonBorder()); uidefaults.put(JTButtonControlUI.BACKGROUND_KEY, new ColorUIResource(0xB0B0B0)); uidefaults.put(JTButtonControlUI.BACKGROUND_STATE_KEY, new ColorUIResource(0xC4F6ED)); uidefaults.put(JTButtonControlUI.BACKGROUND_SELECTED_KEY, new ColorUIResource(0xC6CCDE)); uidefaults.put(DNDLayer.DND_BOUNDINGBOX_BORDER, new BorderUIResource(new BoundingBoxBorder())); uidefaults.put(JTLight.uiClassId, JTBasicLightUI.class.getName()); uidefaults.put(JTLightUI.BORDER_KEY, new BorderUIResource(JTNM1BorderFactory.createNordEditor311Border())); uidefaults.put(JTImage.uiClassID, JTImageUI.class.getName()); uidefaults.put(JTLabel.uiClassID, JTLabelUI.class.getName()); uidefaults.put(JTLabelUI.fontKey, baseFont); uidefaults.put(JTTextDisplay.uiClassID, JTTextDisplayUI.class.getName()); uidefaults.put(JTTextDisplayUI.borderKey, new BorderUIResource(JTNM1BorderFactory.createNordEditor311Border())); uidefaults.put(JTDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(JTDisplayUI.BACKGROUND_KEY, new ColorUIResource(0x008080)); uidefaults.put(JTDisplayUI.FOREGROUND_KEY, new ColorUIResource(0x00ff00)); uidefaults.put(JTDisplayUI.BORDER_KEY, new BorderUIResource(JTNM1BorderFactory.createNordEditor311Border())); uidefaults.put(JTModule.uiClassID, JTModuleUI.class.getName()); uidefaults.put(JTModuleUI.moduleFont, baseFont); uidefaults.put(JTEqMidDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(JTEqShelvingDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(JTPhaserDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(JTFilterEDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(VocoderDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(JTFilterFDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(LFODisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(JTCompressorDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(NoteVelScaleDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(JTEnvelopeDisplay.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(WaveWrapDisp.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(ClipDisp.uiClassID, JTDisplayUI.class.getName()); uidefaults.put(NMScrollbar.ScrollBarUIClassID, JTBasicSliderScrollbarUI.class.getName()); Border moduleBorder = BorderFactory.createRaisedBevelBorder(); Border selectionBorder = new SimpleSelectionBorder(moduleBorder, Color.decode("#CC6600")); uidefaults.put(JTModuleUI.moduleBorder, new BorderUIResource(moduleBorder)); uidefaults.put(JTModuleUI.moduleSelectionBorder, new BorderUIResource(selectionBorder)); uidefaults.put(JTModuleContainer.uiClassId, JTModuleContainerUI.class.getName()); uidefaults.put(JTModuleContainerUI.backgroundKey, new ColorUIResource(0x81818D)); uidefaults.put(JTModuleContainerUI.DnDAllowedKey, Boolean.TRUE); uidefaults.put(JTModuleContainerUI.baseFontKey, baseFont); uidefaults.put(JTNM1SliderUI.sliderGripSizeKey, 3); uidefaults.put(JTNM1SliderUI.sliderBackgroundColorKey, new ColorUIResource(0xDCDCDC)); uidefaults.put(JTNM1SliderUI.sliderGripColorKey, new ColorUIResource(0xC4C4C4)); uidefaults.put(JTNM1SliderUI.sliderGripBorderLightColorKey, new ColorUIResource(0x909090)); uidefaults.put(JTNM1SliderUI.sliderGripBorderDarkColorKey, new ColorUIResource(0x3D3D3D)); uidefaults.put(JTNM1SliderUI.sliderGripColorKey, new ColorUIResource(0xC4C4C4)); uidefaults.put(JTNM1SliderUI.sliderBackgroundColorKey, new ColorUIResource(0xDCDCDE)); uidefaults.put(JTNM1SliderUI.borderKey, new BorderUIResource(JTNM1BorderFactory.createNordEditor311Border())); uidefaults.put(NoteSeqEditorUI.borderKey, new BorderUIResource(JTNM1BorderFactory.createNordEditor311Border())); uidefaults.put(NMNoteSeqEditor.uiClassID, NoteSeqEditorUI.class.getName()); uidefaults.put("module.background", new ColorUIResource(0xC0C0C0)); uidefaults.put("module.background$1", new ColorUIResource(0xE5777A)); uidefaults.put("module.background$2", new ColorUIResource(0xE7D14B)); uidefaults.put("module.background$3", new ColorUIResource(0x93D162)); uidefaults.put("module.background$4", new ColorUIResource(0x69D6C7)); uidefaults.put("module.background$5", new ColorUIResource(0x74A0D4)); uidefaults.put("module.background$6", new ColorUIResource(0xD673C7)); uidefaults.put("morph.color$0", new ColorUIResource(0xCB4F4F)); uidefaults.put("morph.color$1", new ColorUIResource(0x9AC889)); uidefaults.put("morph.color$2", new ColorUIResource(0x5A5FB3)); uidefaults.put("morph.color$3", new ColorUIResource(0xE5DE45)); } }