示例#1
0
    /** Main method that responds to mouseClick events. */
    public void mouseClicked(MouseEvent arg0) {
      if (errListModel.getSize() > 0
          && !errorsList.isSelectionEmpty()
          && !correctionsList.isSelectionEmpty()) {

        String correction = correctionsList.getSelectedValue();
        String error = errorsList.getSelectedValue();

        char[] inputAsChars = text.getText().toCharArray();
        int errIndex = getErrorIndex(error, inputAsChars);

        for (int i = 0; i < error.length(); i++) {
          inputAsChars = ArrayUtils.remove(inputAsChars, errIndex);
        }

        for (int i = 0; i < correction.length(); i++) {
          inputAsChars =
              ArrayUtils.add(
                  inputAsChars, errIndex, correction.charAt(correction.length() - i - 1));
        }

        correctionsListModel.clear();
        errListModel.clear();

        text.setText(new String(inputAsChars));
      }
    }
示例#2
0
 public static String getBucket(String image) {
   if (!StringUtils.isEmpty(image) && createParts(image).length > 1) {
     String[] parts = createParts(image);
     return StringUtils.join(ArrayUtils.remove(parts, parts.length - 1), "/");
   } else {
     LOGGER.warn("No bucket found in source image path.");
     return EMPTY_BUCKET;
   }
 }
示例#3
0
 @Override
 public void update(Care care) throws Exception {
   // TODO Auto-generated method stub
   Object[] params = care.toArray();
   params = ArrayUtils.remove(params, 2);
   params = ArrayUtils.add(params, care.getId());
   update(
       "update care set theme=?, object=?, next=?, way=?, people=?, note=? where id = ?", params);
 }
示例#4
0
    @Override
    public void mouseClicked(MouseEvent arg0) {
      int loops = errListModel.getSize();
      int skipped = 0;
      for (int j = 0; j <= loops; j++) {
        errorsList.setSelectedIndex(0 + skipped);
        if (correctionsListModel.getSize() > 0) {
          correctionsList.setSelectedIndex(0);

          // String correction = correctionsList.getSelectedValue();
          String correction = correctionsListModel.getElementAt(0);
          // String error = errorsList.getSelectedValue();
          String error = errListModel.getElementAt(0);

          char[] inputAsChars = text.getText().toCharArray();
          int errIndex = getErrorIndex(error, inputAsChars);

          for (int i = 0; i < error.length(); i++) {
            inputAsChars = ArrayUtils.remove(inputAsChars, errIndex);
          }

          for (int i = 0; i < correction.length(); i++) {
            inputAsChars =
                ArrayUtils.add(
                    inputAsChars, errIndex, correction.charAt(correction.length() - i - 1));
          }

          // correctionsListModel.clear();
          errListModel.clear();
          correctionsListModel.clear();

          text.setText(new String(inputAsChars));
          correctionsList.setSelectedIndex(0);
        } else {
          skipped++;
        }
        errorsList.setSelectedIndex(0);
      }
    }
示例#5
0
  @Override
  public void handleScore(Score score, ScoreContext ctx) {
    Part part = ctx.getParts().get(PartType.ARPEGGIO);
    if (part == null) {
      return;
    }
    Part mainPart = ctx.getParts().get(PartType.MAIN);
    double currentMeasureSize = 0;
    double normalizedMeasureSize = ctx.getNormalizedMeasureSize();
    SpecialNoteType specialNoteType = null;
    for (Phrase phrase : mainPart.getPhraseArray()) {
      if (Chance.test(20)) { // change the special note type
        if (Chance.test(60)) { // to a new value
          specialNoteType =
              SpecialNoteType.values()[random.nextInt(SpecialNoteType.values().length)];
        } else { // reset
          specialNoteType = null;
        }
      }

      Phrase arpeggioPhrase = new Phrase();
      arpeggioPhrase.setTitle("Arpeggio phrase");
      Scale currentScale = ((ExtendedPhrase) phrase).getScale();
      // get copies of the static ones, so that we can shuffle them without affecting the original
      List<Chord> scaleChords = new ArrayList<Chord>(ChordUtils.chords.get(currentScale));
      Collections.shuffle(scaleChords, random);
      Note[] notes = phrase.getNoteArray();
      List<ToneType> firstToneTypes = new ArrayList<>();

      int measures = 0;
      Note[] currentNotes = null;
      boolean useTwoNoteChords = Chance.test(14);
      Chord chord = null;
      for (int i = 0; i < notes.length; i++) {
        Note currentNote = notes[i];
        if (currentNote.getRhythmValue() == 0) {
          continue; // rhythm value is 0 for the first notes of a (main-part) chord. So progress to
                    // the next
        }
        boolean lastMeasure = measures == ctx.getMeasures() - 1;
        if (currentMeasureSize == 0 && !currentNote.isRest() && !lastMeasure) {
          boolean preferStable =
              ToneResolver.needsContrastingChord(firstToneTypes, ToneGroups.UNSTABLE);
          boolean preferUnstable =
              ToneResolver.needsContrastingChord(firstToneTypes, ToneGroups.STABLE);
          // change the chord only in 1/4 of the cases
          if (currentNotes == null || Chance.test(25)) {
            // no alternatives for now - only 3-note chords
            Chord previous = chord;
            chord =
                ChordUtils.getChord(
                    ctx,
                    currentNote.getPitch(),
                    previous,
                    scaleChords,
                    scaleChords,
                    scaleChords,
                    preferStable,
                    preferUnstable);
            if (chord != null) {
              int[] pitches = chord.getPitches();
              // remove the middle note in some cases (but make it possible to have three-note
              // chords in a generally two-note phrase)
              if (pitches.length == 3 && useTwoNoteChords && Chance.test(90)) {
                pitches = ArrayUtils.remove(pitches, 1);
              }
              int count = Chance.test(90) ? (Chance.test(80) ? 4 : 2) : (Chance.test(80) ? 3 : 5);

              currentNotes = new Note[count];
              double length = normalizedMeasureSize / count;
              for (int k = 0; k < count; k++) {
                Note note = NoteFactory.createNote(pitches[random.nextInt(pitches.length)], length);
                note.setDynamic(
                    InstrumentGroups.getInstrumentSpecificDynamics(
                        65 + random.nextInt(10), part.getInstrument()));
                if (specialNoteType != null) {
                  note.setDuration(note.getRhythmValue() * specialNoteType.getValue());
                }
                currentNotes[k] = note;
              }
            }
          }
          if (Chance.test(85) && currentNotes != null) {
            for (Note note : currentNotes) {
              arpeggioPhrase.addNote(note);
            }
          } else {
            arpeggioPhrase.addRest(new Rest(normalizedMeasureSize));
          }
        } else if (currentMeasureSize == 0 && (currentNote.isRest() || lastMeasure)) {
          arpeggioPhrase.addRest(new Rest(normalizedMeasureSize));
        }

        currentMeasureSize += currentNote.getRhythmValue();
        if (currentMeasureSize >= normalizedMeasureSize) {
          currentMeasureSize = 0;
          measures++;
        }
      }
      part.add(arpeggioPhrase);
    }
  }