GithubHelp home page GithubHelp logo

javasketchpad's Introduction

JavaSketchPad README

This project started with a simple idea of a sketch pad with connected and annotated dots; yet it ends up connecting a handful of UCSD undergrads to create something much more. This side project of ours has helped us learn an enormous amount about coding in Java and team management as well as git usage. Our project goal is to create a visual exploration of Java API. JavaSketchPad will

    1. allow beginners to learn all programming languages visually
    2. enable developers to program faster through visual coding in all programming languages
    3. make visualization of all of Java API possible, bypassing the old way of looking through
       the functionalities in online tedious documentations

Currently JavaSketchPad support partially success usage in Java. Most of the development happens in develop branch, and we will push into Master branch every once in a while for the published version.

Getting Started

These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See “How to work on this project?” for further development details.

Prerequisites

Java Runtime Environment, J2SE 1.8
Ant Build Tool

Installing

git clone the project through “github.com/UCSDOalads/JavaSketchPad” or through the following command:

git clone https://github.com/UCSDOalads/JavaSketchPad.git
cd JavaSketchPad
ant run

User Interface Introduction

alt text

Menu bar:

Contains all the functionalities that you can use on JavaSketchPad, mainly including Data (Input/Output Box, Annotations, etc), Lazy (Java class, method, etc), Edit (Zoom, font, etc), File (e.g. c.xml), Script (same as the “:” commands to quickly add objects). Among them, Generate, Developer, and View are deprecated or under-development.

Canvas:

You can interact with the program on the canvas.

Action History Dialog:

Action History: This table shows the actions user performed in order and each individual action could be highlighted for undo. Undo button: undo the last action. You can also select a row to highlight that action, so that undoing again will undo until that row (inclusive). Redo button: Similiar to Undo button.

Six Button tools: click on the button and click on canvas where you want to put the object (except for Line tool).

Simple Point: a basic developer point that can be connected with Lines Select: the default mode that can select other components on canvas Line: select the Line tool, then connect one point to another. If you want to connect points to pass on data, you have to select the point that contains data and then select the point that the data is going to. This sequence does not matter for Simple Point. Class (C): create a Java class constructor that can be used to create its methods. To create a method, only select one class, and then click on menu bar (Lazy -> Add -> Java Method). The dot on the left side of a method is input/argument, while the dot on the right side is output/return value. InputBox (I): A data input box that can be updated with double click or a click on menu bar (Data -> InputBox -> Update). It can also be connected to the left dots of method to pass in argument for methods. OutputBox (O): A data output box that can be updated with a click on menu bar (Data -> OutputBox -> Update), but only after it is connected to the right dots of method and all the left dots are connected with data.

MUST READ THIS!

For any class other than java.lang.String class, please use a Constructor that takes in a String type data to initialize the value to be the corresponding type before constructing lines.

E.g.: alt text

Contributing

Please read “How to work on this project?” for details on our code of conduct, and the process for submitting pull requests to develop branch.

Open Source Code: Package Description

actions: implements all the actions that users could make interactions from the menu bar
actions.edit.undoredo: handles undo and redo actions
actions.global: defines the general structure of global actions
actions.global.globalactions: all the global actions, which are utilized in the actions package
actions.menu: make connections with the menu items and the associated actions
actions.singleinstanceoperactions: actions on one and only one instance.
buttons: define the structure of tool buttons, which are displayed on the top of the frame
classpathutil: contains the utility classes to generate the names and paths of all the classes in the java standard library and external jar files. The package also contains a search engine that allows users search for classes
file: implements I/O functionality
paintcomponents: define the components in the main panel, including line segments, single point, etc.
paintcomponents.annotations: implement the annotation functionality
paintcomponents.data: define the components that is associated with data
paintcomponents.haskell:
paintcomponents.java.interactive: the interactive version of paint components of class, constructor, method and fields
paintcomponents.java.lazy: the lazy version of paint components of class, constructor, method, and fields
painttools.toolbar: define the structure of the tool bar, which is displayed on the top of the frame
painttools.tools: define tool buttons in the toolbar
script: connect several commands to actions
settings: settings of the program
typesystem: check the type of input and output data box
ui: main frame of the program
ui.cursor: set custom cursor 
ui.general: include input manager of the program
ui.helper.classsearch: help do the search for class
ui.helper.historyui: frame for history(undo, redo) actions
ui.helper.historyui.undoredoLog: generate log for undo/redo Log
ui.helper.methodinput: implements the method input functionality. The package contains a method input frame and a method searching engine. 
ui.icons: icons used in the program

Authors

See also the list of contributors who participated in this project.

(in alphabetical order)
Original Author/ ex-Project Lead: Zhibo Chen.
Project Lead: Cheng Gong
(UI) User Interface Lead:     Kaijie Cai.
              UI members:     Zhien Ke.
(ID) Interactive Design Lead: Muyuan Chi.
              ID members:     Zhongyu Chen, Yaobang Deng, Xiangyi Gong, Xiaoquan Jiang, Kent, Feng Shan, Tan Su.
(BE) Back End Lead:           Yidong Luo.
              BE members:     Sean Z, Tianyi Zhang.

Acknowledgments

UCSD CSE B260 lab
Helen, Zhening Huang, Mossaka, Jiheng Wang, Tony Yang, and any other who support or contribute to this project.

javasketchpad's People

Contributors

alexsffeng avatar alpacanitrate avatar chenggong03 avatar chk111 avatar cvillustrious avatar dybcyrus avatar jihengwang avatar kaijiec avatar kent0318 avatar lhwlyd avatar mossaka avatar seanycz avatar sutan1206 avatar ultimatepea avatar x1gong avatar zhc180 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

javasketchpad's Issues

Errors when dragging multiple lines

Create few points and link them by lines. Once you select some lines, if any two of them have intersection, the graph will move strangely. The standard should be the case that no matter how many lines you select, the graph should move in a whole. But now every points and lines are moving differently.

JUnit Test Cases Needs Rewrite

There are apparently a lot of failures on JUnit test cases, but all test cases still pass. Check CI builds for details.

Zooming-Into-One-Point

Newly merged Zoom Action has zooming problems where zooming into one point translates points into the same pixel (x and y are int, not double. bad precision?)

Delay of Remove through Undo/Redo

Reproduction: create an object (say a Display Box) and then remove it. And then, undo and redo actions only takes effects when the mouse moves into the center canvas. They do not take effect when mouse is on History UI.

Unable to specify names

Iterator performAction methods return before adding components and names can not be stored.

Extra File Added to the develop branch

The following file was accidentally added to the develop branch. Please untracked it from version control.

/.java/fonts/1.8.0_121/fcinfo-1-its-cseb260-18.ucsd.edu-null-null-en.properties

Data Display 22?

Reproduce: add class java.lang.String, add method length() (method 18), add input box some string, add output box, update output box. Sometimes output box is updated to 22, regardless of input.

Undo/Redo Small Auto-Select Problem

When UNDO the last history item on stack, the UNDO button is disabled, but then the REDO button is auto-selected; When REDO the last history item on stack, the REDO button is disabled, but then the command line box is auto-selected.
What to Do: Change it so that nothing is auto-selected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.