Example #1
0
  /**
   * Creates new PropertiesDialog.
   *
   * @param app parent frame
   */
  public PropertiesDialog(Application app) {
    super(app.getFrame(), false);
    this.app = app;
    kernel = app.getKernel();

    setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
    setResizable(true);

    addWindowListener(this);
    geoTree = new JTreeGeoElements();
    geoTree.addMouseListener(
        new MouseAdapter() {
          @Override
          public void mouseEntered(MouseEvent e) {
            // some textfields are updated when they lose focus
            // give them a chance to do that before we change the selection
            requestFocusInWindow();
          }
        });
    geoTree.addTreeSelectionListener(this);
    geoTree.addKeyListener(this);

    // build GUI
    initGUI();
  }
Example #2
0
  /** shows this dialog and select GeoElement geo at screen position location */
  public void setVisibleWithGeos(ArrayList<GeoElement> geos) {
    kernel.clearJustCreatedGeosInViews();

    setViewActive(true);

    if (kernel.getConstruction().getGeoSetConstructionOrder().size() < MAX_GEOS_FOR_EXPAND_ALL)
      geoTree.expandAll();
    else geoTree.collapseAll();

    geoTree.setSelected(geos, false);
    if (!isShowing()) {
      // pack and center on first showing
      if (firstTime) {
        pack();
        setLocationRelativeTo(app.getMainComponent());
        firstTime = false;
      }

      // ensure min size
      Dimension dim = getSize();
      if (dim.width < MIN_WIDTH) {
        dim.width = MIN_WIDTH;
        setSize(dim);
      }
      if (dim.height < MIN_HEIGHT) {
        dim.height = MIN_HEIGHT;
        setSize(dim);
      }

      super.setVisible(true);
    }
  }
Example #3
0
 public void geoElementSelected(GeoElement geo, boolean addToSelection) {
   if (geo == null) return;
   tempArrayList.clear();
   tempArrayList.add(geo);
   geoTree.setSelected(tempArrayList, addToSelection);
   // requestFocus();
 }
Example #4
0
  /** deletes all selected GeoElements from Kernel */
  private void deleteSelectedGeos() {
    ArrayList selGeos = selectionList;

    if (selGeos.size() > 0) {
      Object[] geos = selGeos.toArray();
      for (int i = 0; i < geos.length - 1; i++) {
        ((GeoElement) geos[i]).removeOrSetUndefinedIfHasFixedDescendent();
      }

      // select element above last to delete
      GeoElement geo = (GeoElement) geos[geos.length - 1];
      TreePath tp = geoTree.getTreePath(geo);
      if (tp != null) {
        int row = geoTree.getRowForPath(tp);
        tp = geoTree.getPathForRow(row - 1);
        geo.removeOrSetUndefinedIfHasFixedDescendent();
        if (tp != null) geoTree.setSelectionPath(tp);
      }
    }
  }
Example #5
0
  /** handles selection change */
  private void selectionChanged() {
    updateSelectedGeos(geoTree.getSelectionPaths());

    Object[] geos = selectionList.toArray();
    propPanel.updateSelection(geos);
    // Util.addKeyListenerToAll(propPanel, this);

    // update selection of application too
    if (app.getMode() == EuclidianConstants.MODE_SELECTION_LISTENER)
      app.setSelectedGeos(selectionList);
  }
Example #6
0
  /**
   * Update the labels of this dialog.
   *
   * <p>TODO Create "Apply Defaults" phrase (F.S.)
   */
  public void setLabels() {
    setTitle(app.getPlain("Properties"));
    geoTree.root.setUserObject(app.getPlain("Objects"));

    delButton.setText(app.getPlain("Delete"));
    closeButton.setText(app.getMenu("Close"));
    defaultsButton.setText(app.getMenu("ApplyDefaults"));

    geoTree.setLabels();
    propPanel.setLabels();
  }
Example #7
0
  private void setViewActive(boolean flag) {
    if (flag == viewActive) return;
    viewActive = flag;

    if (flag) {
      geoTree.clear();
      kernel.attach(geoTree);

      //			// only add objects if there are less than 200
      //			int geoSize = kernel.getConstruction().getGeoSetConstructionOrder().size();
      //			if (geoSize < MAX_OBJECTS_IN_TREE)
      kernel.notifyAddAll(geoTree);

      app.setSelectionListenerMode(this);
      addWindowFocusListener(this);
    } else {
      kernel.detach(geoTree);

      removeWindowFocusListener(this);
      app.setSelectionListenerMode(null);
    }
  }
Example #8
0
  /** inits GUI with labels of current language */
  public void initGUI() {
    geoTree.setFont(app.getPlainFont());

    boolean wasShowing = isShowing();
    if (wasShowing) {
      setVisible(false);
    }

    //	LIST PANEL
    JScrollPane listScroller = new JScrollPane(geoTree);
    listScroller.setMinimumSize(new Dimension(120, 200));
    listScroller.setBackground(geoTree.getBackground());
    listScroller.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 5));

    // delete button
    delButton = new JButton(app.getImageIcon("delete_small.gif"));
    delButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            deleteSelectedGeos();
          }
        });

    // apply defaults button
    defaultsButton = new JButton();
    defaultsButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            applyDefaults();
          }
        });

    closeButton = new JButton();
    closeButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            closeDialog();
          }
        });

    // build button panel with some buttons on the left
    // and some on the right
    JPanel buttonPanel = new JPanel(new BorderLayout());
    JPanel leftButtonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
    JPanel rightButtonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
    buttonPanel.add(rightButtonPanel, BorderLayout.EAST);
    buttonPanel.add(leftButtonPanel, BorderLayout.WEST);

    // left buttons
    if (app.letDelete()) leftButtonPanel.add(delButton);

    leftButtonPanel.add(defaultsButton);

    // right buttons
    rightButtonPanel.add(closeButton);

    // PROPERTIES PANEL
    if (colChooser == null) {
      // init color chooser
      colChooser = new GeoGebraColorChooser(app);
    }

    // check for null added otherwise you get two listeners for the colChooser
    // when a file is loaded
    if (propPanel == null) {
      propPanel = new PropertiesPanel(app, colChooser, false);
      propPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 0, 5));
    }
    selectionChanged(); // init propPanel

    // put it all together
    Container contentPane = getContentPane();
    contentPane.removeAll();
    // contentPane.setBorder(BorderFactory.createEmptyBorder(1, 1, 1, 1));

    JSplitPane splitPane = new JSplitPane();
    splitPane.setLeftComponent(listScroller);
    splitPane.setRightComponent(propPanel);

    contentPane.setLayout(new BorderLayout());
    contentPane.add(splitPane, BorderLayout.CENTER);
    contentPane.add(buttonPanel, BorderLayout.SOUTH);

    if (wasShowing) {
      setVisible(true);
    }

    setLabels();
  }