public void Set( IOComponentTypes Type, BoardRectangle rect, String loc, String pull, String active, String standard, String drive) { MyType = Type; MyRectangle = rect; rect.SetActiveOnHigh(active.equals(PinActivity.Behavior_strings[PinActivity.ActiveHigh])); NrOfPins = 1; MyPinLocations.put(0, loc); MyPullBehavior = PullBehaviors.getId(pull); MyActivityLevel = PinActivity.getId(active); MyIOStandard = IoStandards.getId(standard); MyIdentifier = 0; MyDriveStrength = DriveStrength.getId(drive); }
private void GetSimpleInformationDialog(BoardDialog parent) { int NrOfDevicePins = IOComponentTypes.GetNrOfFPGAPins(MyType); final JDialog selWindow = new JDialog(parent.GetPanel(), MyType + " properties"); JComboBox<String> DriveInput = new JComboBox<>(DriveStrength.Behavior_strings); JComboBox<String> PullInput = new JComboBox<>(PullBehaviors.Behavior_strings); JComboBox<String> ActiveInput = new JComboBox<>(PinActivity.Behavior_strings); ActionListener actionListener = new ActionListener() { public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("cancel")) { MyType = IOComponentTypes.Unknown; abort = true; } selWindow.setVisible(false); } }; GridBagLayout dialogLayout = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); selWindow.setLayout(dialogLayout); c.fill = GridBagConstraints.HORIZONTAL; c.gridy = -1; ArrayList<JTextField> LocInputs = new ArrayList<JTextField>(); ArrayList<String> PinLabels; switch (MyType) { case SevenSegment: PinLabels = SevenSegment.GetLabels(); break; case RGBLED: PinLabels = RGBLed.GetLabels(); break; case DIPSwitch: PinLabels = DipSwitch.GetLabels(NrOfDevicePins); break; case PortIO: PinLabels = PortIO.GetLabels(NrOfDevicePins); break; case LocalBus: PinLabels = ReptarLocalBus.GetLabels(); break; default: PinLabels = new ArrayList<String>(); if (NrOfDevicePins == 1) { PinLabels.add("FPGA pin"); } else { for (int i = 0; i < NrOfDevicePins; i++) { PinLabels.add("pin " + i); } } } int offset = 0; int oldY = c.gridy; int maxY = -1; for (int i = 0; i < NrOfDevicePins; i++) { if (i % 32 == 0) { offset = (i / 32) * 2; c.gridy = oldY; } JLabel LocText = new JLabel("Specify " + PinLabels.get(i) + " location:"); c.gridx = 0 + offset; c.gridy++; selWindow.add(LocText, c); JTextField txt = new JTextField(6); LocInputs.add(txt); c.gridx = 1 + offset; selWindow.add(LocInputs.get(i), c); maxY = c.gridy > maxY ? c.gridy : maxY; } c.gridy = maxY; JLabel StandardText = new JLabel("Specify FPGA pin standard:"); c.gridy++; c.gridx = 0; selWindow.add(StandardText, c); JComboBox<String> StandardInput = new JComboBox<>(IoStandards.Behavior_strings); StandardInput.setSelectedIndex(parent.GetDefaultStandard()); c.gridx = 1; selWindow.add(StandardInput, c); if (IOComponentTypes.OutputComponentSet.contains(MyType)) { JLabel DriveText = new JLabel("Specify FPGA pin drive strength:"); c.gridy++; c.gridx = 0; selWindow.add(DriveText, c); DriveInput.setSelectedIndex(parent.GetDefaultDriveStrength()); c.gridx = 1; selWindow.add(DriveInput, c); } if (IOComponentTypes.InputComponentSet.contains(MyType)) { JLabel PullText = new JLabel("Specify FPGA pin pull behavior:"); c.gridy++; c.gridx = 0; selWindow.add(PullText, c); PullInput.setSelectedIndex(parent.GetDefaultPullSelection()); c.gridx = 1; selWindow.add(PullInput, c); } if (!IOComponentTypes.InOutComponentSet.contains(MyType)) { JLabel ActiveText = new JLabel("Specify " + MyType + " activity:"); c.gridy++; c.gridx = 0; selWindow.add(ActiveText, c); ActiveInput.setSelectedIndex(parent.GetDefaultActivity()); c.gridx = 1; selWindow.add(ActiveInput, c); } JButton OkayButton = new JButton("Done and Store"); OkayButton.setActionCommand("done"); OkayButton.addActionListener(actionListener); c.gridx = 0; c.gridy++; selWindow.add(OkayButton, c); JButton CancelButton = new JButton("Cancel"); CancelButton.setActionCommand("cancel"); CancelButton.addActionListener(actionListener); c.gridx = 1; selWindow.add(CancelButton, c); selWindow.pack(); selWindow.setLocation(Projects.getCenteredLoc(selWindow.getWidth(), selWindow.getHeight())); // PointerInfo mouseloc = MouseInfo.getPointerInfo(); // Point mlocation = mouseloc.getLocation(); // selWindow.setLocation(mlocation.x, mlocation.y); selWindow.setModal(true); selWindow.setResizable(false); selWindow.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); selWindow.setAlwaysOnTop(true); abort = false; while (!abort) { selWindow.setVisible(true); if (!abort) { boolean correct = true; for (int i = 0; i < NrOfDevicePins; i++) { if (LocInputs.get(i).getText().isEmpty()) { correct = false; showDialogNotification( selWindow, "Error", "<html>You have to specify a location for " + PinLabels.get(i) + "!</html>"); continue; } } if (correct) { parent.SetDefaultStandard(StandardInput.getSelectedIndex()); NrOfPins = NrOfDevicePins; for (int i = 0; i < NrOfDevicePins; i++) { MyPinLocations.put(i, LocInputs.get(i).getText()); } MyIOStandard = IoStandards.getId(StandardInput.getSelectedItem().toString()); if (IOComponentTypes.OutputComponentSet.contains(MyType)) { parent.SetDefaultDriveStrength(DriveInput.getSelectedIndex()); MyDriveStrength = DriveStrength.getId(DriveInput.getSelectedItem().toString()); } if (IOComponentTypes.InputComponentSet.contains(MyType)) { parent.SetDefaultPullSelection(PullInput.getSelectedIndex()); MyPullBehavior = PullBehaviors.getId(PullInput.getSelectedItem().toString()); } if (!IOComponentTypes.InOutComponentSet.contains(MyType)) { parent.SetDefaultActivity(ActiveInput.getSelectedIndex()); MyActivityLevel = PinActivity.getId(ActiveInput.getSelectedItem().toString()); } abort = true; } } } selWindow.dispose(); }
public FPGAIOInformationContainer(Node DocumentInfo) { /* * This constructor is used to create an element during the reading of a * board information xml file */ MyType = IOComponentTypes.Unknown; MyIdentifier = -1; MyRectangle = null; MyPinLocations = new HashMap<Integer, String>(); NrOfPins = 0; MyPullBehavior = PullBehaviors.Unknown; MyActivityLevel = PinActivity.Unknown; MyIOStandard = IoStandards.Unknown; MyDriveStrength = DriveStrength.Unknown; IOComponentTypes SetId = IOComponentTypes.getEnumFromString(DocumentInfo.getNodeName()); if (IOComponentTypes.KnownComponentSet.contains(SetId)) { MyType = SetId; } else { return; } NamedNodeMap Attrs = DocumentInfo.getAttributes(); int x = -1, y = -1, width = -1, height = -1; for (int i = 0; i < Attrs.getLength(); i++) { Node ThisAttr = Attrs.item(i); if (ThisAttr.getNodeName().equals(BoardWriterClass.LocationXString)) { x = Integer.parseInt(ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().equals(BoardWriterClass.LocationYString)) { y = Integer.parseInt(ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().equals(BoardWriterClass.WidthString)) { width = Integer.parseInt(ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().equals(BoardWriterClass.HeightString)) { height = Integer.parseInt(ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().equals(BoardWriterClass.PinLocationString)) { NrOfPins = 1; MyPinLocations.put(0, ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().equals(BoardWriterClass.MultiPinInformationString)) { NrOfPins = Integer.parseInt(ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().startsWith(BoardWriterClass.MultiPinPrefixString)) { String Id = ThisAttr.getNodeName().substring(BoardWriterClass.MultiPinPrefixString.length()); MyPinLocations.put(Integer.parseInt(Id), ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().equals(DriveStrength.DriveAttributeString)) { MyDriveStrength = DriveStrength.getId(ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().equals(PullBehaviors.PullAttributeString)) { MyPullBehavior = PullBehaviors.getId(ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().equals(IoStandards.IOAttributeString)) { MyIOStandard = IoStandards.getId(ThisAttr.getNodeValue()); } if (ThisAttr.getNodeName().equals(PinActivity.ActivityAttributeString)) { MyActivityLevel = PinActivity.getId(ThisAttr.getNodeValue()); } } if ((x < 0) || (y < 0) || (width < 1) || (height < 1)) { MyType = IOComponentTypes.Unknown; return; } boolean PinsComplete = true; for (int i = 0; i < NrOfPins; i++) { if (!MyPinLocations.containsKey(i)) { logger.warn("Bizar missing pin {} of component!", i); PinsComplete = false; } } if (!PinsComplete) { MyType = IOComponentTypes.Unknown; return; } if (MyType.equals(IOComponentTypes.DIPSwitch) || MyType.equals(IOComponentTypes.PortIO)) { MyType.setNbSwitch(NrOfPins); } MyRectangle = new BoardRectangle(x, y, width, height); }