package main; import java.awt.Dimension; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.InputStream; import java.util.Enumeration; import java.util.Properties; import javax.swing.JSplitPane; class PatchData { private Header header; private Modules modules; private Cables cables; private KeyboardAssignment keyboardAssignment; private KnobAssignMap knobAssignMap; private CurrentNotes currentNotes; private ControlMap controlMap; private PatchNotes patchNotes; private MorphMap morphMap; private String patchFileName = ""; private static Properties props; JModAreaPane desktopPanePoly; JModAreaPane desktopPaneCommon; PatchData () { header = new Header(this); cables = new Cables(this); modules = new Modules(this); keyboardAssignment = new KeyboardAssignment(this); knobAssignMap = new KnobAssignMap(this); currentNotes = new CurrentNotes(this); controlMap = new ControlMap(this); patchNotes = new PatchNotes(this); morphMap = new MorphMap(this); openProps(); } public static Properties getProperties() { return props; } public static void openProps(){ props = new Properties(); InputStream in = null; try { in = new FileInputStream("modules.properties"); props.load(in); in.close(); } catch (Exception e) { System.out.print(e + " in loading module.properties"); } } public void setPanes(JModAreaPane newDesktopPanePoly, JModAreaPane newDesktopPaneCommon) { desktopPanePoly = newDesktopPanePoly; desktopPaneCommon = newDesktopPaneCommon; } public Modules getModules() { return modules; } public Cables getCables() { return cables; } public JModAreaPane getDesktopPane(boolean poly) { return poly?desktopPanePoly:desktopPaneCommon; } public void setPreferredSizes() { desktopPanePoly.setPreferredSize(new Dimension(modules.getMaxWidth(true), modules.getMaxHeight(true))); desktopPaneCommon.setPreferredSize(new Dimension(modules.getMaxWidth(false), modules.getMaxHeight(false))); } // Moet naar Patch.java toe... public void showPatch(JSplitPane splitPane) { int i = 0; splitPane.setDividerLocation(header.getSeperator() + 1); for (Enumeration e = modules.getPoly().keys(); e.hasMoreElements();) { i = ((Integer) e.nextElement()).intValue(); modules.getModule(true, i).drawModule(); } for (Enumeration e = modules.getCommon().keys(); e.hasMoreElements();) { i = ((Integer) e.nextElement()).intValue(); modules.getModule(false, i).drawModule(); } cables.drawCables(desktopPanePoly, true); cables.drawCables(desktopPaneCommon, false); } public void loadPatch(String fileName) { BufferedReader pchFile; String tag = new String(); patchFileName = fileName; if (!fileName.equals("")) { try { pchFile = new BufferedReader(new FileReader(fileName)); while ((tag = pchFile.readLine()) != null) { if (tag.compareToIgnoreCase("[Header]") == 0) header.readHeader(pchFile); else if (tag.compareToIgnoreCase("[ModuleDump]") == 0) modules.readModuleDump(pchFile, desktopPanePoly, desktopPaneCommon); else if (tag.compareToIgnoreCase("[CurrentNoteDump]") == 0) currentNotes.readCurrentNoteDump(pchFile); else if (tag.compareToIgnoreCase("[CableDump]") == 0) cables.readCableDump(pchFile); else if (tag.compareToIgnoreCase("[ParameterDump]") == 0) modules.readParameterDump(pchFile); else if (tag.compareToIgnoreCase("[CustomDump]") == 0) modules.readCustomDump(pchFile); else if (tag.compareToIgnoreCase("[MorphMapDump]") == 0) morphMap.readMorphMapDump(pchFile); else if (tag.compareToIgnoreCase("[KeyboardAssignment]") == 0) keyboardAssignment.readKeyboardAssignment(pchFile); else if (tag.compareToIgnoreCase("[KnobMapDump]") == 0) knobAssignMap.readKnobMapDump(pchFile); else if (tag.compareToIgnoreCase("[CtrlMapDump]") == 0) controlMap.readCtrlMapDump(pchFile); else if (tag.compareToIgnoreCase("[NameDump]") == 0) modules.readNameDump(pchFile); else if (tag.compareToIgnoreCase("[Notes]") == 0) patchNotes.readPatchNotes(pchFile); } pchFile.close(); // modules.closeProp(); cables.recalcCableLocations(modules, true); cables.recalcCableLocations(modules, false); } catch(Exception e) { System.out.println(e + " in loadPatch"); } } } // public void printPatch() { // int i = 0; // // System.out.println(header.getVersion()); // // System.out.println("\nPoly modules:"); // for (Enumeration e = modules.getPoly().keys(); e.hasMoreElements();) { // i = ((Integer) e.nextElement()).intValue(); // System.out.println("\t" + modules.getModule(true, i).getModuleData().getModIndex() + " is a " + modules.getModule(true, i).getModuleData().getTypeNameShort() + " (" + modules.getModule(true, i).getModuleData().getModType() + "): \"" + modules.getModule(true, i).getName() + "\" with " + modules.getModule(true, i).getModuleData().getNoParameters() + " parameters."); // } // // System.out.println("\nCommon modules:"); // for (Enumeration e = modules.getCommon().keys(); e.hasMoreElements();) { // i = ((Integer) e.nextElement()).intValue(); // System.out.println("\t" + modules.getModule(false, i).getModuleData().getModIndex() + " is a " + modules.getModule(false, i).getModuleData().getTypeNameShort() + " (" + modules.getModule(false, i).getModuleData().getModType() + "): \"" + modules.getModule(false, i).getName() + "\" with " + modules.getModule(false, i).getModuleData().getNoParameters() + " parameters."); // } // // System.out.println("\nPoly cables:"); // for (i=0; i < cables.getPolySize();i++) { // System.out.println("\tcable " + (i+1) + " (" + cables.getCable(true, i).getName() + "): \"" + modules.getModule(true, cables.getCable(true, i).getEndModule()).getName() + "\" connected to \"" + modules.getModule(true, cables.getCable(true, i).getBeginModule()).getName() + "\""); // } // // System.out.println("\nCommon cables:"); // for (i=0; i < cables.getCommonSize();i++) { // System.out.println("\tcable " + (i+1) + " (" + cables.getCable(false, i).getName() + "): \"" + modules.getModule(false, cables.getCable(false, i).getEndModule()).getName() + "\" connected to \"" + modules.getModule(false, cables.getCable(false, i).getBeginModule()).getName() + "\""); // } // } public StringBuffer savePatch(JSplitPane splitPane) { // String creatorP = "jMod"; // String creatorV = "0.3"; StringBuffer result = new StringBuffer(""); result.append("[Info]\r\n"); result.append("Creator=" + jMod.creatorP + ", version " + jMod.creatorV + ", release " + jMod.creatorR + "\r\n"); result.append("[/Info]\r\n"); result = header.createHeader(result, splitPane); result = modules.createModuleDump(result); result = currentNotes.createCurrentNoteDump(result); result = cables.createCableDump(result); result = modules.createParameterDump(result); result = modules.createCustomDump(result); result = morphMap.createMorphMapDump(result); result = keyboardAssignment.createKeyboardAssignment(result); result = knobAssignMap.createKnobMapDump(result); result = controlMap.createControlMapDump(result); result = modules.createNameDump(result); result = patchNotes.createNotes(result); return result; } }