package main; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTarget; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JDesktopPane; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.JPopupMenu.Separator; public class JModAreaPane extends JDesktopPane implements MouseListener, DropTargetListener { private boolean poly = true; private PatchData patchData = null; private JModAreaPane _this = null; private int clickX = 0, clickY = 0; int oldCableDragX = 0; int oldCableDragY = 0; private DropTarget dropTarget = null; private int dropAction = DnDConstants.ACTION_COPY_OR_MOVE; JPopupMenu menu = new JPopupMenu(); JModAreaPane(boolean newPoly, PatchData patchData) { super(); _this = this; this.patchData = patchData; dropTarget = new DropTarget(this, dropAction, this, true); JMenu i_oMenu = new JMenu("Ins/Outs"); JMenu oscMenu = new JMenu("Oscillators"); JMenu lfoMenu = new JMenu("LFO's"); JMenu envMenu = new JMenu("Envelopes"); JMenu fltMenu = new JMenu("Filters"); JMenu mixMenu = new JMenu("Mixers"); JMenu audMenu = new JMenu("Audio"); JMenu ctlMenu = new JMenu("Controls"); JMenu logMenu = new JMenu("Logical"); JMenu seqMenu = new JMenu("Sequencers"); JMenuItem mod001 = new JMenuItem(ModuleData.getTypeNLC(1)); JMenuItem mod002 = new JMenuItem(ModuleData.getTypeNLC(2)); JMenuItem mod003 = new JMenuItem(ModuleData.getTypeNLC(3)); JMenuItem mod004 = new JMenuItem(ModuleData.getTypeNLC(4)); JMenuItem mod005 = new JMenuItem(ModuleData.getTypeNLC(5)); JMenuItem mod007 = new JMenuItem(ModuleData.getTypeNLC(7)); JMenuItem mod008 = new JMenuItem(ModuleData.getTypeNLC(8)); JMenuItem mod009 = new JMenuItem(ModuleData.getTypeNLC(9)); JMenuItem mod010 = new JMenuItem(ModuleData.getTypeNLC(10)); JMenuItem mod011 = new JMenuItem(ModuleData.getTypeNLC(11)); JMenuItem mod012 = new JMenuItem(ModuleData.getTypeNLC(12)); JMenuItem mod013 = new JMenuItem(ModuleData.getTypeNLC(13)); JMenuItem mod014 = new JMenuItem(ModuleData.getTypeNLC(14)); JMenuItem mod015 = new JMenuItem(ModuleData.getTypeNLC(15)); JMenuItem mod016 = new JMenuItem(ModuleData.getTypeNLC(16)); JMenuItem mod017 = new JMenuItem(ModuleData.getTypeNLC(17)); JMenuItem mod018 = new JMenuItem(ModuleData.getTypeNLC(18)); JMenuItem mod019 = new JMenuItem(ModuleData.getTypeNLC(19)); JMenuItem mod020 = new JMenuItem(ModuleData.getTypeNLC(20)); JMenuItem mod021 = new JMenuItem(ModuleData.getTypeNLC(21)); JMenuItem mod022 = new JMenuItem(ModuleData.getTypeNLC(22)); JMenuItem mod023 = new JMenuItem(ModuleData.getTypeNLC(23)); JMenuItem mod024 = new JMenuItem(ModuleData.getTypeNLC(24)); JMenuItem mod025 = new JMenuItem(ModuleData.getTypeNLC(25)); JMenuItem mod026 = new JMenuItem(ModuleData.getTypeNLC(26)); JMenuItem mod027 = new JMenuItem(ModuleData.getTypeNLC(27)); JMenuItem mod028 = new JMenuItem(ModuleData.getTypeNLC(28)); JMenuItem mod029 = new JMenuItem(ModuleData.getTypeNLC(29)); JMenuItem mod030 = new JMenuItem(ModuleData.getTypeNLC(30)); JMenuItem mod031 = new JMenuItem(ModuleData.getTypeNLC(31)); JMenuItem mod032 = new JMenuItem(ModuleData.getTypeNLC(32)); JMenuItem mod033 = new JMenuItem(ModuleData.getTypeNLC(33)); JMenuItem mod034 = new JMenuItem(ModuleData.getTypeNLC(34)); JMenuItem mod035 = new JMenuItem(ModuleData.getTypeNLC(35)); JMenuItem mod036 = new JMenuItem(ModuleData.getTypeNLC(36)); JMenuItem mod037 = new JMenuItem(ModuleData.getTypeNLC(37)); JMenuItem mod038 = new JMenuItem(ModuleData.getTypeNLC(38)); JMenuItem mod039 = new JMenuItem(ModuleData.getTypeNLC(39)); JMenuItem mod040 = new JMenuItem(ModuleData.getTypeNLC(40)); JMenuItem mod043 = new JMenuItem(ModuleData.getTypeNLC(43)); JMenuItem mod044 = new JMenuItem(ModuleData.getTypeNLC(44)); JMenuItem mod045 = new JMenuItem(ModuleData.getTypeNLC(45)); JMenuItem mod046 = new JMenuItem(ModuleData.getTypeNLC(46)); JMenuItem mod047 = new JMenuItem(ModuleData.getTypeNLC(47)); JMenuItem mod048 = new JMenuItem(ModuleData.getTypeNLC(48)); JMenuItem mod049 = new JMenuItem(ModuleData.getTypeNLC(49)); JMenuItem mod050 = new JMenuItem(ModuleData.getTypeNLC(50)); JMenuItem mod051 = new JMenuItem(ModuleData.getTypeNLC(51)); JMenuItem mod052 = new JMenuItem(ModuleData.getTypeNLC(52)); JMenuItem mod053 = new JMenuItem(ModuleData.getTypeNLC(53)); JMenuItem mod054 = new JMenuItem(ModuleData.getTypeNLC(54)); JMenuItem mod057 = new JMenuItem(ModuleData.getTypeNLC(57)); JMenuItem mod058 = new JMenuItem(ModuleData.getTypeNLC(58)); JMenuItem mod059 = new JMenuItem(ModuleData.getTypeNLC(59)); JMenuItem mod061 = new JMenuItem(ModuleData.getTypeNLC(61)); JMenuItem mod062 = new JMenuItem(ModuleData.getTypeNLC(62)); JMenuItem mod063 = new JMenuItem(ModuleData.getTypeNLC(63)); JMenuItem mod064 = new JMenuItem(ModuleData.getTypeNLC(64)); JMenuItem mod065 = new JMenuItem(ModuleData.getTypeNLC(65)); JMenuItem mod066 = new JMenuItem(ModuleData.getTypeNLC(66)); JMenuItem mod067 = new JMenuItem(ModuleData.getTypeNLC(67)); JMenuItem mod068 = new JMenuItem(ModuleData.getTypeNLC(68)); JMenuItem mod069 = new JMenuItem(ModuleData.getTypeNLC(69)); JMenuItem mod070 = new JMenuItem(ModuleData.getTypeNLC(70)); JMenuItem mod071 = new JMenuItem(ModuleData.getTypeNLC(71)); JMenuItem mod072 = new JMenuItem(ModuleData.getTypeNLC(72)); JMenuItem mod073 = new JMenuItem(ModuleData.getTypeNLC(73)); JMenuItem mod074 = new JMenuItem(ModuleData.getTypeNLC(74)); JMenuItem mod075 = new JMenuItem(ModuleData.getTypeNLC(75)); JMenuItem mod076 = new JMenuItem(ModuleData.getTypeNLC(76)); JMenuItem mod077 = new JMenuItem(ModuleData.getTypeNLC(77)); JMenuItem mod078 = new JMenuItem(ModuleData.getTypeNLC(78)); JMenuItem mod079 = new JMenuItem(ModuleData.getTypeNLC(79)); JMenuItem mod080 = new JMenuItem(ModuleData.getTypeNLC(80)); JMenuItem mod081 = new JMenuItem(ModuleData.getTypeNLC(81)); JMenuItem mod082 = new JMenuItem(ModuleData.getTypeNLC(82)); JMenuItem mod083 = new JMenuItem(ModuleData.getTypeNLC(83)); JMenuItem mod084 = new JMenuItem(ModuleData.getTypeNLC(84)); JMenuItem mod085 = new JMenuItem(ModuleData.getTypeNLC(85)); JMenuItem mod086 = new JMenuItem(ModuleData.getTypeNLC(86)); JMenuItem mod087 = new JMenuItem(ModuleData.getTypeNLC(87)); JMenuItem mod088 = new JMenuItem(ModuleData.getTypeNLC(88)); JMenuItem mod089 = new JMenuItem(ModuleData.getTypeNLC(89)); JMenuItem mod090 = new JMenuItem(ModuleData.getTypeNLC(90)); JMenuItem mod091 = new JMenuItem(ModuleData.getTypeNLC(91)); JMenuItem mod092 = new JMenuItem(ModuleData.getTypeNLC(92)); JMenuItem mod094 = new JMenuItem(ModuleData.getTypeNLC(94)); JMenuItem mod095 = new JMenuItem(ModuleData.getTypeNLC(95)); JMenuItem mod096 = new JMenuItem(ModuleData.getTypeNLC(96)); JMenuItem mod097 = new JMenuItem(ModuleData.getTypeNLC(97)); JMenuItem mod098 = new JMenuItem(ModuleData.getTypeNLC(98)); JMenuItem mod099 = new JMenuItem(ModuleData.getTypeNLC(99)); JMenuItem mod100 = new JMenuItem(ModuleData.getTypeNLC(100)); JMenuItem mod102 = new JMenuItem(ModuleData.getTypeNLC(102)); JMenuItem mod103 = new JMenuItem(ModuleData.getTypeNLC(103)); JMenuItem mod104 = new JMenuItem(ModuleData.getTypeNLC(104)); JMenuItem mod105 = new JMenuItem(ModuleData.getTypeNLC(105)); JMenuItem mod106 = new JMenuItem(ModuleData.getTypeNLC(106)); JMenuItem mod107 = new JMenuItem(ModuleData.getTypeNLC(107)); JMenuItem mod108 = new JMenuItem(ModuleData.getTypeNLC(108)); JMenuItem mod110 = new JMenuItem(ModuleData.getTypeNLC(110)); JMenuItem mod111 = new JMenuItem(ModuleData.getTypeNLC(111)); JMenuItem mod112 = new JMenuItem(ModuleData.getTypeNLC(112)); JMenuItem mod113 = new JMenuItem(ModuleData.getTypeNLC(113)); JMenuItem mod114 = new JMenuItem(ModuleData.getTypeNLC(114)); JMenuItem mod115 = new JMenuItem(ModuleData.getTypeNLC(115)); JMenuItem mod117 = new JMenuItem(ModuleData.getTypeNLC(117)); JMenuItem mod118 = new JMenuItem(ModuleData.getTypeNLC(118)); JMenuItem mod127 = new JMenuItem(ModuleData.getTypeNLC(127)); poly = newPoly; addMouseListener(this); menu.add(i_oMenu); menu.add(oscMenu); menu.add(lfoMenu); menu.add(envMenu); menu.add(fltMenu); menu.add(mixMenu); menu.add(audMenu); menu.add(ctlMenu); menu.add(logMenu); menu.add(seqMenu); mod001.addActionListener(new AddModule(1)); mod002.addActionListener(new AddModule(2)); mod003.addActionListener(new AddModule(3)); mod004.addActionListener(new AddModule(4)); mod005.addActionListener(new AddModule(5)); mod007.addActionListener(new AddModule(7)); mod008.addActionListener(new AddModule(8)); mod009.addActionListener(new AddModule(9)); mod010.addActionListener(new AddModule(10)); mod011.addActionListener(new AddModule(11)); mod012.addActionListener(new AddModule(12)); mod013.addActionListener(new AddModule(13)); mod014.addActionListener(new AddModule(14)); mod015.addActionListener(new AddModule(15)); mod016.addActionListener(new AddModule(16)); mod017.addActionListener(new AddModule(17)); mod018.addActionListener(new AddModule(18)); mod019.addActionListener(new AddModule(19)); mod020.addActionListener(new AddModule(20)); mod021.addActionListener(new AddModule(21)); mod022.addActionListener(new AddModule(22)); mod023.addActionListener(new AddModule(23)); mod024.addActionListener(new AddModule(24)); mod025.addActionListener(new AddModule(25)); mod026.addActionListener(new AddModule(26)); mod027.addActionListener(new AddModule(27)); mod028.addActionListener(new AddModule(28)); mod029.addActionListener(new AddModule(29)); mod030.addActionListener(new AddModule(30)); mod031.addActionListener(new AddModule(31)); mod032.addActionListener(new AddModule(32)); mod033.addActionListener(new AddModule(33)); mod034.addActionListener(new AddModule(34)); mod035.addActionListener(new AddModule(35)); mod036.addActionListener(new AddModule(36)); mod037.addActionListener(new AddModule(37)); mod038.addActionListener(new AddModule(38)); mod039.addActionListener(new AddModule(39)); mod040.addActionListener(new AddModule(40)); mod043.addActionListener(new AddModule(43)); mod044.addActionListener(new AddModule(44)); mod045.addActionListener(new AddModule(45)); mod046.addActionListener(new AddModule(46)); mod047.addActionListener(new AddModule(47)); mod048.addActionListener(new AddModule(48)); mod049.addActionListener(new AddModule(49)); mod050.addActionListener(new AddModule(50)); mod051.addActionListener(new AddModule(51)); mod052.addActionListener(new AddModule(52)); mod053.addActionListener(new AddModule(53)); mod054.addActionListener(new AddModule(54)); mod057.addActionListener(new AddModule(57)); mod058.addActionListener(new AddModule(58)); mod059.addActionListener(new AddModule(59)); mod061.addActionListener(new AddModule(61)); mod062.addActionListener(new AddModule(62)); mod063.addActionListener(new AddModule(63)); mod064.addActionListener(new AddModule(64)); mod065.addActionListener(new AddModule(65)); mod066.addActionListener(new AddModule(66)); mod067.addActionListener(new AddModule(67)); mod068.addActionListener(new AddModule(68)); mod069.addActionListener(new AddModule(69)); mod070.addActionListener(new AddModule(70)); mod071.addActionListener(new AddModule(71)); mod072.addActionListener(new AddModule(72)); mod073.addActionListener(new AddModule(73)); mod074.addActionListener(new AddModule(74)); mod075.addActionListener(new AddModule(75)); mod076.addActionListener(new AddModule(76)); mod077.addActionListener(new AddModule(77)); mod078.addActionListener(new AddModule(78)); mod079.addActionListener(new AddModule(79)); mod080.addActionListener(new AddModule(80)); mod081.addActionListener(new AddModule(81)); mod082.addActionListener(new AddModule(82)); mod083.addActionListener(new AddModule(83)); mod084.addActionListener(new AddModule(84)); mod085.addActionListener(new AddModule(85)); mod086.addActionListener(new AddModule(86)); mod087.addActionListener(new AddModule(87)); mod088.addActionListener(new AddModule(88)); mod089.addActionListener(new AddModule(89)); mod090.addActionListener(new AddModule(90)); mod091.addActionListener(new AddModule(91)); mod092.addActionListener(new AddModule(92)); mod094.addActionListener(new AddModule(94)); mod095.addActionListener(new AddModule(95)); mod096.addActionListener(new AddModule(96)); mod097.addActionListener(new AddModule(97)); mod098.addActionListener(new AddModule(98)); mod099.addActionListener(new AddModule(99)); mod100.addActionListener(new AddModule(100)); mod102.addActionListener(new AddModule(102)); mod103.addActionListener(new AddModule(103)); mod104.addActionListener(new AddModule(104)); mod105.addActionListener(new AddModule(105)); mod106.addActionListener(new AddModule(106)); mod107.addActionListener(new AddModule(107)); mod108.addActionListener(new AddModule(108)); mod110.addActionListener(new AddModule(110)); mod111.addActionListener(new AddModule(111)); mod112.addActionListener(new AddModule(112)); mod113.addActionListener(new AddModule(113)); mod114.addActionListener(new AddModule(114)); mod115.addActionListener(new AddModule(115)); mod117.addActionListener(new AddModule(117)); mod118.addActionListener(new AddModule(118)); mod127.addActionListener(new AddModule(127)); i_oMenu.add(mod001); i_oMenu.add(mod063); i_oMenu.add(mod065); i_oMenu.add(new Separator()); i_oMenu.add(mod002); i_oMenu.add(mod127); i_oMenu.add(new Separator()); i_oMenu.add(mod005); i_oMenu.add(mod004); i_oMenu.add(mod003); i_oMenu.add(new Separator()); i_oMenu.add(mod067); i_oMenu.add(mod100); oscMenu.add(mod097); oscMenu.add(mod007); oscMenu.add(mod008); oscMenu.add(mod009); oscMenu.add(mod107); oscMenu.add(mod096); oscMenu.add(new Separator()); oscMenu.add(mod014); oscMenu.add(mod010); oscMenu.add(mod011); oscMenu.add(mod012); oscMenu.add(mod013); oscMenu.add(mod106); oscMenu.add(mod085); oscMenu.add(new Separator()); oscMenu.add(mod031); oscMenu.add(new Separator()); oscMenu.add(mod095); oscMenu.add(mod058); lfoMenu.add(mod024); lfoMenu.add(mod025); lfoMenu.add(mod026); lfoMenu.add(new Separator()); lfoMenu.add(mod080); lfoMenu.add(mod027); lfoMenu.add(mod028); lfoMenu.add(mod029); lfoMenu.add(mod030); lfoMenu.add(new Separator()); lfoMenu.add(mod068); lfoMenu.add(new Separator()); lfoMenu.add(mod033); lfoMenu.add(mod034); lfoMenu.add(mod110); lfoMenu.add(mod035); lfoMenu.add(new Separator()); lfoMenu.add(mod099); envMenu.add(mod020); envMenu.add(mod084); envMenu.add(mod023); envMenu.add(mod046); envMenu.add(mod052); envMenu.add(new Separator()); envMenu.add(mod071); fltMenu.add(mod086); fltMenu.add(mod087); fltMenu.add(mod050); fltMenu.add(new Separator()); fltMenu.add(mod049); fltMenu.add(mod051); fltMenu.add(mod092); fltMenu.add(new Separator()); fltMenu.add(mod045); fltMenu.add(mod108); fltMenu.add(mod032); fltMenu.add(new Separator()); fltMenu.add(mod103); fltMenu.add(mod104); mixMenu.add(mod019); mixMenu.add(mod040); mixMenu.add(new Separator()); mixMenu.add(mod044); mixMenu.add(new Separator()); mixMenu.add(mod018); mixMenu.add(mod047); mixMenu.add(new Separator()); mixMenu.add(mod113); mixMenu.add(mod114); mixMenu.add(mod111); mixMenu.add(mod112); mixMenu.add(new Separator()); mixMenu.add(mod076); mixMenu.add(new Separator()); mixMenu.add(mod079); mixMenu.add(mod088); mixMenu.add(new Separator()); mixMenu.add(mod081); audMenu.add(mod061); audMenu.add(mod062); audMenu.add(mod074); audMenu.add(new Separator()); audMenu.add(mod054); audMenu.add(mod078); audMenu.add(mod053); audMenu.add(mod082); audMenu.add(mod094); audMenu.add(mod102); audMenu.add(new Separator()); audMenu.add(mod057); audMenu.add(new Separator()); audMenu.add(mod083); audMenu.add(new Separator()); audMenu.add(mod021); audMenu.add(mod105); audMenu.add(mod117); audMenu.add(mod118); ctlMenu.add(mod043); ctlMenu.add(new Separator()); ctlMenu.add(mod039); ctlMenu.add(mod048); ctlMenu.add(mod016); ctlMenu.add(new Separator()); ctlMenu.add(mod072); ctlMenu.add(mod075); ctlMenu.add(mod098); ctlMenu.add(mod022); ctlMenu.add(new Separator()); ctlMenu.add(mod066); ctlMenu.add(mod115); logMenu.add(mod036); logMenu.add(mod064); logMenu.add(mod038); logMenu.add(mod037); logMenu.add(new Separator()); logMenu.add(mod070); logMenu.add(new Separator()); logMenu.add(mod073); logMenu.add(new Separator()); logMenu.add(mod059); logMenu.add(mod089); logMenu.add(new Separator()); logMenu.add(mod069); logMenu.add(mod077); seqMenu.add(mod017); seqMenu.add(new Separator()); seqMenu.add(mod091); seqMenu.add(new Separator()); seqMenu.add(mod015); seqMenu.add(mod090); } class AddModule implements ActionListener { int modIndex = 0; AddModule(int newModIndex){ modIndex = newModIndex; } public void actionPerformed(ActionEvent e) { Module mod = patchData.getModules().addModule(poly, "" + ((poly?patchData.getModules().getPolySize():patchData.getModules().getCommonSize()) + 1) + " " + modIndex + " 0 0", _this); mod.getModuleData().setModuleName(ModuleData.getTypeName(mod.getModuleData().getModType())); mod.setPixLocation(mod, ((clickX / ModuleData.pixWidth) * ModuleData.pixWidth), ((clickY / ModuleData.pixHeight) * ModuleData.pixHeight)); mod.drawModule(); patchData.getModules().rearangeModules(_this, mod, poly); } } public void mouseClicked(MouseEvent e) { // if (e.isPopupTrigger()) { // menu.show(e.getComponent(), e.getX(), e.getY()); // } } public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) { clickX = e.getX(); clickY = e.getY(); menu.show(e.getComponent(), clickX, clickY); } } public void mousePressed(MouseEvent arg0) {} public void mouseEntered(MouseEvent arg0) {} public void mouseExited(MouseEvent arg0) {} public void dragOver(DropTargetDragEvent e) { int newDragX = e.getLocation().x - Cable.cableWindowOffset; int newDragY = e.getLocation().y - Cable.cableWindowOffset; if ((newDragX != oldCableDragX) || (newDragY != oldCableDragX)) { Cables.getDragCable().setNewDragWindowLayout((newDragX), (newDragY)); Cables.getDragCable().repaint(); oldCableDragX = newDragX; oldCableDragY = newDragY; } e.rejectDrag(); // Debug.println("Module dragOver"); } public void dragEnter(DropTargetDragEvent arg0) {} public void dropActionChanged(DropTargetDragEvent arg0) {} public void dragExit(DropTargetEvent arg0) {} public void drop(DropTargetDropEvent arg0) {} }