Newer
Older
PureATN_M / src / main / java / cit / PureATN / MultiNote / MultiNote.java
package cit.PureATN.MultiNote;

import java.awt.Color;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.swing.WindowConstants;

import org.josql.Query;
import org.josql.QueryExecutionException;
import org.josql.QueryParseException;
import org.josql.QueryResults;
import org.piccolo2d.PCanvas;
import org.piccolo2d.PNode;

import cit.PureATN.Note;
import cit.PureATN.PenUser;
import cit.PureATN.ShortStroke;

public class MultiNote extends Note {

    public MultiNote() {
        this(null);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        theapp = this; // どこからでもNote.theapp で参照できるように
    }

    public MultiNote(final PCanvas aCanvas) {
        super(aCanvas);
        int width = 1000;
        int height = (int) (width * 1.414);
        setSize(width, height);
        setLocation(100, 200);

        // dPenReceiver = new DPenReceiver(this);
    }

    public void initialize() {
        super.initialize();

        // 追加機能:キーイベント
        getCanvas().addKeyListener(new KeyEvent_on_MultiNote(getCanvas()));

        // 追加機能:右クリックでメニューをだす
        getCanvas().getCamera().addInputEventListener(new MouseEvent_onMN(this));

        currentTitle = "MultiNote  (Esc key to zoom whole strokes)";
        // setTitle(currentTitle);
        setMousePenID(1);

    }

    public static void main(final String[] args) {
        new MultiNote();
    }

    // 色付け
    public void iroduke() {
        Enumeration<String> ite = PenUser.penusers.keys();
        while (ite.hasMoreElements()) {
            String penidStr = ite.nextElement();
            String penid0x = penidStr.substring(3);
            int penid = Integer.parseInt(penid0x);
            // System.out.println(penid+" "+penid*penid); //pen06

            Color c = Color.getHSBColor((float) (penid / 10.0f), 0.8f, 0.8f);
            ArrayList<ShortStroke> sss = PenUser.find(penidStr).strokes;
            for (ShortStroke s : sss) {
                s.setStrokePaint(c);
                System.out.println(s.time);
            }
        }
        repaint();
    }

    /**
     * 筆記数の確認サンプル:PenIDごとに、筆記数を表示する
     */
    public void showStat() {
        // 検索対象をあつめる
        ArrayList<ShortStroke> ass = new ArrayList<ShortStroke>();
        var ite = getCanvas().getLayer().getAllNodes().iterator();
        while (ite.hasNext()) {
            var n = ite.next();
            if (n instanceof ShortStroke) {
                ShortStroke ss = (ShortStroke) n;
                ass.add(ss);
            }
        }

        // (n ->

        Query q5 = new Query();
        try {
            q5.parse("select * from cit.PureATN.ShortStroke group by penid");
        } catch (QueryParseException e) {
            e.printStackTrace();
        }
        QueryResults qr5 = null;
        try {
            qr5 = q5.execute(ass);
            Map grpBys = qr5.getGroupByResults();
            Iterator iter = grpBys.keySet().iterator();
            while(iter.hasNext()){
                List key = (List)iter.next();
                List res = (List) grpBys.get(key);
                System.out.println(key.toString()+" "+res.size());
            }
            // for (ShortStroke ss : (List<ShortStroke>) qr5.getResults()) {
            //     System.out.println(ss.penid);
            // }
        } catch (QueryExecutionException e) {
            e.printStackTrace();
        }

    }

}