Search in sources :

Example 1 with ExpressionObject

use of doc.mathobjects.ExpressionObject in project OpenNotebook by jaltekruse.

the class ExpressionGenerator method generateProblem.

public GeneratedProblem generateProblem(int difficulty) {
    GeneratedProblem newProblem = new GeneratedProblem();
    ExpressionObject expressionObj = new ExpressionObject();
    try {
        newProblem.setDifficulty(difficulty);
        newProblem.getListWithName(GeneratedProblem.GEN_LIST).getValues().clear();
        ((ListAttribute<UUIDAttribute>) newProblem.getListWithName(GeneratedProblem.GEN_LIST)).addValueWithString(getProblemID().toString());
        Node[] n = generateExpression(difficulty);
        expressionObj.setExpression(n[0].toStringRepresentation());
        expressionObj.addCorrectAnswer(n[1].toStringRepresentation());
    } catch (AttributeException e) {
        e.printStackTrace();
    } catch (NodeException e) {
        e.printStackTrace();
    }
    getProblemHoldingDocument().getDocViewerPanel().drawObjectInBackground(expressionObj);
    expressionObj.setParentContainer(newProblem.getParentContainer());
    newProblem.addObjectFromPage(expressionObj);
    return newProblem;
}
Also used : ExpressionObject(doc.mathobjects.ExpressionObject) Node(expression.Node) GeneratedProblem(doc.mathobjects.GeneratedProblem) NodeException(expression.NodeException) AttributeException(doc.attributes.AttributeException) ListAttribute(doc.attributes.ListAttribute)

Example 2 with ExpressionObject

use of doc.mathobjects.ExpressionObject in project OpenNotebook by jaltekruse.

the class OpenNotebook method addContents.

private void addContents(Container c) {
    notebookPanel = new NotebookPanel(this);
    //		propertiesFrames = new ObjectPropertiesFrame[MathObject.objects.length];
    //		for (int i = 0; i < MathObject.objects.length; i++){
    //			//System.out.println("before:" + (new java.util.Date().getTime() - timeAtStart));
    //			//propertiesFrames[i] = new ObjectPropertiesFrame(MathObject.objects[i], notebookPanel);
    //			//System.out.println("after:" + (new java.util.Date().getTime() - timeAtStart));
    //		}
    new ObjectPropertiesFrame(new GraphObject(), notebookPanel);
    new ObjectPropertiesFrame(new ExpressionObject(), notebookPanel);
    c.removeAll();
    c.setLayout(new GridBagLayout());
    GridBagConstraints bCon = new GridBagConstraints();
    bCon.fill = GridBagConstraints.BOTH;
    bCon.weightx = 1;
    bCon.weighty = 1;
    c.add(notebookPanel, bCon);
}
Also used : GridBagConstraints(java.awt.GridBagConstraints) ObjectPropertiesFrame(doc_gui.attribute_panels.ObjectPropertiesFrame) ExpressionObject(doc.mathobjects.ExpressionObject) GridBagLayout(java.awt.GridBagLayout) GraphObject(doc.mathobjects.GraphObject)

Example 3 with ExpressionObject

use of doc.mathobjects.ExpressionObject in project OpenNotebook by jaltekruse.

the class ObjectPropertiesFrame method generatePanel.

/**
	 * Generates a menu for adjusting the properties of a mathobject.
	 * 
	 * @param o - object to base menu panel on
	 */
public void generatePanel(MathObject o) {
    System.out.println("generate panel" + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
    if (o == null) {
        return;
    }
    this.getContentPane().removeAll();
    object = o;
    JPanel panel = mainPanel;
    mainPanel.removeAll();
    adjusters.removeAllElements();
    listAdjusters.removeAllElements();
    this.setTitle(o.getType());
    JTabbedPane panelTabs = null;
    JPanel tabOneContents = null, tabTwoContents = null;
    GridBagConstraints con = new GridBagConstraints();
    con.fill = GridBagConstraints.BOTH;
    con.weightx = 1;
    con.weighty = 1;
    con.insets = new Insets(2, 2, 2, 2);
    con.gridx = 0;
    con.gridy = 0;
    System.out.println("end init stuff" + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
    if (o instanceof GraphObject || (o instanceof ExpressionObject && !notebookPanel.isInStudentMode())) {
        // there are too many attributes and actions for the graph to put them all in one panel
        // add a tabbed pane to make it more reasonable and avoid scrolling
        panelTabs = new JTabbedPane();
        this.getContentPane().add(panelTabs);
        tabOneContents = new JPanel();
        tabOneContents.setLayout(new GridBagLayout());
        tabTwoContents = new JPanel();
        tabTwoContents.setLayout(new GridBagLayout());
        System.out.println("1 " + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
        JScrollPane tabScrollPane = new JScrollPane(panelTabs);
        tabScrollPane.getVerticalScrollBar().setUnitIncrement(16);
        tabScrollPane.getHorizontalScrollBar().setUnitIncrement(16);
        System.out.println("2 " + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
        tabScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        if (o instanceof GraphObject) {
            panelTabs.add("Nav", tabOneContents);
            panelTabs.add("Grid", tabTwoContents);
            panel = tabOneContents;
        } else if (o instanceof ExpressionObject) {
            panelTabs.add("Expression", tabOneContents);
            panelTabs.add("Solve", tabTwoContents);
            panel = tabOneContents;
        }
        System.out.println("3 " + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
        this.getContentPane().add(tabScrollPane);
        System.out.println("4 " + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
    } else {
        this.getContentPane().add(scrollPane);
    }
    System.out.println("done with tabs " + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
    con.weighty = .01;
    JPanel actionPics = new JPanel();
    actionPics.setLayout(new GridLayout(0, 4, 4, 4));
    JPanel otherActions = new JPanel();
    otherActions.setLayout(new GridLayout(0, 1, 4, 4));
    ImageIcon pic;
    JButton button;
    if (!notebookPanel.isInStudentMode()) {
        for (final String s : o.getActions()) {
            pic = getIconForAction(s);
            if (pic != null)
                createButton(s, 0, 0, 0, 0, actionPics);
            else
                createButton(s, 0, 0, 0, 0, otherActions);
        }
    }
    System.out.println("teacher actions done" + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
    boolean skipAction;
    for (final String s : o.getStudentActions()) {
        skipAction = false;
        if (object instanceof GraphObject) {
            // use more intuitive
            for (String str : graphNavActions) {
                if (s.equals(str)) {
                    skipAction = true;
                    break;
                }
            }
        }
        if (object instanceof ExpressionObject) {
            // in a separate panel to make the list of actions smaller
            for (String str : expressionOpActions) {
                if (s.equals(str)) {
                    skipAction = true;
                    break;
                }
            }
        }
        if (skipAction) {
            continue;
        }
        pic = getIconForAction(s);
        if (pic != null)
            createButton(s, 0, 0, 0, 0, actionPics);
        else
            createButton(s, 0, 0, 0, 0, otherActions);
    }
    System.out.println("student actions done" + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
    if (otherActions.getComponentCount() != 0) {
        // only add panel for actions if components have been added to it
        panel.add(otherActions, con);
        con.gridy++;
    }
    if (actionPics.getComponentCount() != 0) {
        // only add panel for action pics if components have been added to it
        panel.add(actionPics, con);
        con.gridy++;
    }
    if (object instanceof GraphObject) {
        panel.add(createGraphNavigator(), con);
        con.gridy++;
    }
    if (o instanceof ExpressionObject && !notebookPanel.isInStudentMode()) {
        // there are too many attributes and actions for the expression to put them all in one panel
        // added a tabbed pane to make it more reasonable and avoid scrolling
        // this line moves to the other tab to place components there
        panel = tabTwoContents;
    }
    if (object instanceof ExpressionObject) {
        panel.add(createExpressionModifier(), con);
        con.gridy++;
    }
    //Switch back to tab one if in teacher mode, to allow attribute adjusters to be on the first tab
    if (o instanceof ExpressionObject && !notebookPanel.isInStudentMode())
        panel = tabOneContents;
    con.fill = GridBagConstraints.HORIZONTAL;
    if (o instanceof GraphObject) {
        // there are too many attributes and actions for the graph to put them all in one panel
        // added a tabbed pane to make it more reasonable and avoid scrolling
        // this line moves to the other tab to place components there
        panel = new JPanel();
        panel.setLayout(new GridBagLayout());
        con.anchor = GridBagConstraints.PAGE_START;
        tabTwoContents.add(panel, con);
        con.anchor = GridBagConstraints.CENTER;
    }
    con.fill = GridBagConstraints.BOTH;
    for (MathObjectAttribute mAtt : o.getAttributes()) {
        if (notebookPanel.isInStudentMode() && mAtt.isStudentEditable() || (!notebookPanel.isInStudentMode() && mAtt.isUserEditable())) {
            // only show editing dialog if in teacher mode (not student)
            //or if the attribute has been left student editable
            adjusters.add(getAdjuster(mAtt, notebookPanel, panel));
            if (mAtt instanceof StringAttribute) {
                // make string panels stretch vertically
                con.weighty = 1;
                con.fill = GridBagConstraints.BOTH;
            } else {
                // make all others stretch very little vertically
                con.weighty = 0;
                con.fill = GridBagConstraints.HORIZONTAL;
            }
            panel.add(adjusters.get(adjusters.size() - 1), con);
            con.gridy++;
        }
    }
    System.out.println("end att adjusters:" + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
    con.weighty = 1;
    if (o instanceof GraphObject) {
        // see above comments about tabs for some objects
        panel = tabOneContents;
    }
    for (ListAttribute list : o.getLists()) {
        if ((notebookPanel.isInStudentMode() && list.isStudentEditable()) || (!notebookPanel.isInStudentMode() && list.isUserEditable())) {
            // only show editing dialog if in teacher mode (not student)
            //or if the attribute has been left student editable
            listAdjusters.add(new ListAdjuster(list, notebookPanel, panel));
            panel.add(listAdjusters.get(listAdjusters.size() - 1), con);
            con.gridy++;
        }
    }
    System.out.println("end lists:" + +(new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
    if (panel.getComponentCount() == 0) {
        panel.add(new JLabel("No actions for this object"), con);
    }
    panel.revalidate();
    this.pack();
    this.update();
    this.setSize(this.getWidth() + 30, this.getHeight());
    System.out.println("done making props frame" + (new Date().getTime() - notebookPanel.getOpenNotebook().timeAtStart));
}
Also used : JScrollPane(javax.swing.JScrollPane) JPanel(javax.swing.JPanel) ImageIcon(javax.swing.ImageIcon) GridBagConstraints(java.awt.GridBagConstraints) Insets(java.awt.Insets) GridBagLayout(java.awt.GridBagLayout) JTabbedPane(javax.swing.JTabbedPane) JButton(javax.swing.JButton) StringAttribute(doc.attributes.StringAttribute) JLabel(javax.swing.JLabel) GraphObject(doc.mathobjects.GraphObject) Date(java.util.Date) GridLayout(java.awt.GridLayout) MathObjectAttribute(doc.attributes.MathObjectAttribute) ExpressionObject(doc.mathobjects.ExpressionObject) ListAttribute(doc.attributes.ListAttribute)

Example 4 with ExpressionObject

use of doc.mathobjects.ExpressionObject in project OpenNotebook by jaltekruse.

the class OldReader method startElement.

@Override
public void startElement(String uri, String name, String qName, Attributes atts) {
    boolean justAddedObject = false;
    if (qName.equals("OpenNotebookDoc")) {
        doc = new Document(atts.getValue(Document.FILENAME));
        doc.setAuthor(atts.getValue(Document.AUTHOR));
    }
    if (doc != null) {
        if (qName.equals("Page")) {
            page = new Page(doc);
            doc.addPage(page);
            return;
        }
        if (page != null) {
            if (mObj != null) {
                readAttribute(uri, name, qName, atts);
            }
            if (qName.equals("AnswerBox")) {
                mObj = new AnswerBoxObject(page);
                justAddedObject = true;
            }
            if (qName.equals("CubeObject")) {
                mObj = new CubeObject(page);
                justAddedObject = true;
            } else if (qName.equals("ExpressionObject")) {
                mObj = new ExpressionObject(page);
                justAddedObject = true;
            } else if (qName.equals("GraphObject")) {
                mObj = new GraphObject(page);
                justAddedObject = true;
            } else if (qName.equals("NumberLineObject")) {
                mObj = new NumberLineObject(page);
                justAddedObject = true;
            } else if (qName.equals("OvalObject")) {
                mObj = new OvalObject(page);
                justAddedObject = true;
            } else if (qName.equals("ParallelogramObject")) {
                mObj = new ParallelogramObject(page);
                justAddedObject = true;
            } else if (qName.equals("RectangleObject")) {
                mObj = new RectangleObject(page);
                justAddedObject = true;
            } else if (qName.equals("TextObject")) {
                mObj = new TextObject(page);
                justAddedObject = true;
            } else if (qName.equals("TrapezoidObject")) {
                mObj = new TrapezoidObject(page);
                justAddedObject = true;
            } else if (qName.equals("TriangleObject")) {
                mObj = new TriangleObject(page);
                justAddedObject = true;
            }
            if (justAddedObject) {
                if (page != null) {
                    page.addObject(mObj);
                }
            }
        }
    }
}
Also used : NumberLineObject(doc.mathobjects.NumberLineObject) RectangleObject(doc.mathobjects.RectangleObject) Page(doc.Page) Document(doc.Document) GraphObject(doc.mathobjects.GraphObject) TrapezoidObject(doc.mathobjects.TrapezoidObject) TextObject(doc.mathobjects.TextObject) TriangleObject(doc.mathobjects.TriangleObject) ExpressionObject(doc.mathobjects.ExpressionObject) AnswerBoxObject(doc.mathobjects.AnswerBoxObject) CubeObject(doc.mathobjects.CubeObject) OvalObject(doc.mathobjects.OvalObject) ParallelogramObject(doc.mathobjects.ParallelogramObject)

Aggregations

ExpressionObject (doc.mathobjects.ExpressionObject)4 GraphObject (doc.mathobjects.GraphObject)3 ListAttribute (doc.attributes.ListAttribute)2 GridBagConstraints (java.awt.GridBagConstraints)2 GridBagLayout (java.awt.GridBagLayout)2 Document (doc.Document)1 Page (doc.Page)1 AttributeException (doc.attributes.AttributeException)1 MathObjectAttribute (doc.attributes.MathObjectAttribute)1 StringAttribute (doc.attributes.StringAttribute)1 AnswerBoxObject (doc.mathobjects.AnswerBoxObject)1 CubeObject (doc.mathobjects.CubeObject)1 GeneratedProblem (doc.mathobjects.GeneratedProblem)1 NumberLineObject (doc.mathobjects.NumberLineObject)1 OvalObject (doc.mathobjects.OvalObject)1 ParallelogramObject (doc.mathobjects.ParallelogramObject)1 RectangleObject (doc.mathobjects.RectangleObject)1 TextObject (doc.mathobjects.TextObject)1 TrapezoidObject (doc.mathobjects.TrapezoidObject)1 TriangleObject (doc.mathobjects.TriangleObject)1