ivishwa / alternate-java-bridge-library Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/alternate-java-bridge-library
License: Apache License 2.0
Automatically exported from code.google.com/p/alternate-java-bridge-library
License: Apache License 2.0
/* * * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ This is a repository of publically available pieces to use along with Java Bridge. It's original intent was to eliminate the need for installing the Kawa library. It also adds additional functionality. Contents: src/com/xiledsystems/AlternateJavaBridgelib/ This contains all the source files contained within the AlternatJavaBridgelib.far file. src/com/xiledsystems/samples/ This contains source code for examples using the library jar/AlternateJavaBridgelib.jar This jar file contains the library components to use when using java to build Android applications.
Please create a DatePicker component for the GLE that we can drop in.
Then in the activity you would do
private DatePicker myDatePicker = new DatePicker(this, R.id.DatePickerObject)
then some methods for returning different date formats
Original issue reported on code.google.com by [email protected]
on 17 Feb 2012 at 1:53
What steps will reproduce the problem?
1. Create a table
2. Enter some data
3. Use ClearTable method to clear out the data
4. Instead of emptying the table, the table is deleted completely from the
database
What is the expected output? What do you see instead?
I expect the table to have all rows removed but to stay in tact ready to accept
new records, instead, the table is deleted from the database completely.
What version of the product are you using? On what operating system?
Latest jar 3/17. Windows 7 64 bit
Please provide any additional information below.
Confirmed via SQLlite Editor that the table is removed exactly after the
ClearTable method is implemented.
***NOTE*** - The ability to delete a table is a great function. Perhaps after
fixing this issue, the original version of ClearTable() can be implemented as
"DeleteTable()"
Original issue reported on code.google.com by [email protected]
on 18 Mar 2012 at 3:14
This is another way to store data persistantly. It uses android's built in
SharedPreferences. It's great for small amounts of data (like preferences). It
allows storing of booleans, ints, longs, Strings, and Set<String>.
Original issue reported on code.google.com by [email protected]
on 7 May 2012 at 1:44
I am looking for a way to easily make a listpicker use a DoubleList to populate
properly for allowing a 2 list view such as android.r.layout.simple_list_item_2.
so it would work that you have a DoubleList called myDoubleList and a
listpicker call myListPicker and you would do
myListPicker.ElementsFromDoubleList(myDoubleList) {
//This, just like the elements from array feature would populate the listpicker properly to handle a 2 item list view
}
Original issue reported on code.google.com by [email protected]
on 11 Mar 2012 at 1:17
I'd like to add a visible component to the GLE for AdMobBanner, making it
easier to place ads in an app.
Original issue reported on code.google.com by [email protected]
on 2 Mar 2012 at 6:54
What steps will reproduce the problem?
1.N/A
What is the expected output? What do you see instead?
N/A
What version of the product are you using? On what operating system?
Latest, Win 7 64 bit
Please provide any additional information below.
It was spelled DateSelecter, I believe it should be DateSelector instead
Original issue reported on code.google.com by [email protected]
on 11 Mar 2012 at 2:31
Allow the dev to move the background image, simulating a sprite moving (when it
actually doesn't move at all).
Original issue reported on code.google.com by [email protected]
on 8 May 2012 at 5:35
This is LOW priority item. Only mentioning it because I defienitely will want
to use this down the road, so I don't want to forget to add it.
BRIEFLY looking at the paypal api, it appears that you can use a soap class,
which is good because we have that already. Here is a link to some of their
API information.
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/howt
o_api_overview
Now I recommend not doing any work on this yet, as this is their standard API.
I have a feeling they will be changing this relatively soon with the upcoming
release of "Paypal here" their "Square" like device for the paypal app that
lets users swipe credit cards and pay directly on your device.
So the idea is, you are in your app, and you are with a client who owes you
money. The paypal here features, allow you to swipe the users credit card
right on your phone to collect payment. My guess is, with the release of
PayPal here (sometime in the next couple of months), they will update the API
to integrate more with their actual application (this is all a guess on my
part).
Here is some information on PayPal here:
https://www.paypal.com/webapps/mpp/credit-card-reader
I'll post again down the road once either the feature gets released...and/or I
finish EVERY thing else on my app :)
Original issue reported on code.google.com by [email protected]
on 7 May 2012 at 1:07
Simple Radio group component to go alone with the view. The only requested
function is something like
Public String Selection() {
//return the currently checked box as a string when called
}
can't think of any other function except maybe a "Clear" function?
I am going to enter RadioButton (or whatever you want to call it) as a separate
component. When thinking about this in the bigger picture it made more sense
this way.
Original issue reported on code.google.com by [email protected]
on 22 Feb 2012 at 2:26
RadioGroupCheckBox.Selection();
//returns the selected radiocheckbox
Original issue reported on code.google.com by [email protected]
on 26 Apr 2012 at 2:50
OAUTH2 should probably be handled separetly as it can be used in a lot of
different things...but once written should be integrated in to the Fusion Table
class to replace (or compliment) the soon to be deprecated client login.
Original issue reported on code.google.com by [email protected]
on 1 May 2012 at 7:10
Please add a method for resetting the TimeClock.
So if i have a clock running, that I want to start over and run again, i would
want to....
TimeClock.Start();
TimeClock.Stop();
TimeClock.Reset();
TimeClock.Start(): //Now the clock is starting again from 0 counting up.
All other methods reflect as if it just started for the first time as a new
clock.
Original issue reported on code.google.com by [email protected]
on 1 May 2012 at 2:03
Internal class used for holding sprite sheet information.
Original issue reported on code.google.com by [email protected]
on 5 May 2012 at 7:29
I would like an easy to use Bridge equivalent that works like the GLE component
progress bar. The spinning circle in the middle of the screen, not the actualy
BAR version. The bar version would be a great addition later, but for now, the
simple component, with some basic features like ProgressBar.enabled(true/false)
would be great.
I know there is an easy to use version for the title bar, but I would like one
on the main screen instead.
Original issue reported on code.google.com by [email protected]
on 27 Mar 2012 at 1:38
List how an Arraylist will allow you to insert an item to a specific location
in the list.
list.add(0, "blah", 42);
This will insert those two items in the list, and push any others behind it.
Original issue reported on code.google.com by [email protected]
on 5 May 2012 at 7:22
What steps will reproduce the problem?
1. Create a layout view in the GLE or in XML
2. Declare a component for that layout (i.e. private TableLayout layout;
3. Try and instantiate it, there does not seem to be a proper way to
instantiate this like other components.
What is the expected output? What do you see instead?
I expect to see new TableLayout(this, R.id.TableLayout), instead I see new
TableLayout(this, int, int).
What version of the product are you using? On what operating system?
Latest version, Win 7 64 bit
Please provide any additional information below.
For now, if you use the regular views, as pointed out by ryan (built in to
android), you can instantiate like this....
android.widget.TableLayout layout = (android.widget.TableLayout)
findViewById(R.id.tableLayout1);
This works, but is inconsistent with the rest of the bridge
LOW PRIORITY
Original issue reported on code.google.com by [email protected]
on 3 May 2012 at 8:19
This will probably not happen until sometime after Jellybean has already come
out....and so I don't expect it to actually get done, but I have futilely been
searching for a way to programatically change the raido from 4glte to cdma.
And to clarify, I would be ok with having to have root access to do this (since
all my phones are rooted anyway).
So this is more to track all the info I find so it is stored in 1 place. I'll
start off by posting what i found on some motorola forums. Haven't tried this,
I doubt it will work but I found this....
Hi,
I found some way in RilDataProvider.class (ProgramMode.apk):
private RilDataProvider()
{
mPhone = PhoneFactory.getDefaultPhone();
}
public void setPreferredNetworkType(RilDataCallback.RIL_NETWORK_MODE
paramRIL_NETWORK_MODE)
{
mNetWorkMode = paramRIL_NETWORK_MODE.toInt();
Message localMessage = mHandler.obtainMessage(73);
Phone localPhone = mPhone;
int i = paramRIL_NETWORK_MODE.toInt();
localPhone.setPreferredNetworkType(i, localMessage);
}
===============================================
RIL_NETWORK_MODE_CDMA = 4
RIL_NETWORK_MODE_CDMA_NO_EVDO = 5
RIL_NETWORK_MODE_EVDO_NO_CDMA = 6
RIL_NETWORK_MODE_LTE_EVDO_CDMA = 7
IL_NETWORK_MODE_LTE_ONLY = 8
Original issue reported on code.google.com by [email protected]
on 3 May 2012 at 2:57
Just like it says, a method to clear out the listpick so you can start fresh.
Original issue reported on code.google.com by [email protected]
on 1 Apr 2012 at 7:46
I can't think of any reason why someone would not want to run their FT queries
in a separate thread...but just in case...maybe just add a new method
QueryInThread(); that does the same thing as query, but in a separate thread...
Original issue reported on code.google.com by [email protected]
on 1 May 2012 at 7:08
Add a toggle button class.
This works like a checkbox, in that it throws the "Changed" event (and a
boolean if it's on or off).
Original issue reported on code.google.com by [email protected]
on 10 May 2012 at 3:15
Please add a class to handle the new Calendar functionality introduced in API
Level 14. The purpose of this feature is to hide the complexity of using the
content provider android framework. An example would be creating a calendar
component that would work like...
private Calendar myGoogleCalendar = new Calendar(then context to choose a
specific calendar, in this case google calendar).
Some functions requested are...
myGoogleCalendar.AddEvent (String for each calendar option) {
Allows user to call AddEvent and supply details for a calendar to be stored as a new event.
}
myGoogleCalendar.readAgenda (int numberOfUpComingEventsYouWantReturned) {
This event should return an array of records. The records should be the next events for the user of the calendar. The number of events is passed)
myGoogleCalendar.readEvents (stuff) {
Not sure how to implement this, but I would like some sort of search method. For my specific usage, I am creating calendar events for my customers. SO i want to be able to search for events where that customer is in the subject, or description, or something and have those events returned.
}
Original issue reported on code.google.com by [email protected]
on 17 Feb 2012 at 1:33
This allows you to know when the button is clicked, so you can process stuff
after.
Original issue reported on code.google.com by [email protected]
on 7 May 2012 at 1:09
What steps will reproduce the problem?
1.Create a dropdown component
2.set up an event dispatch to look for "AfterSelection" of that component
3. That event is triggering as true anytime the dispatchEvent is being run
(including when the form loads). So essentially, this event ALWAYS gets
triggered
What is the expected output? What do you see instead?
It should only be triggered when the user has actually selected something from
the drop down
What version of the product are you using? On what operating system?
latest jar - 5-8-12
Please provide any additional information below.
HIGH PRIORITY
Original issue reported on code.google.com by [email protected]
on 8 May 2012 at 6:57
When using AB_Button, if you set the Text from within the designer, the text
doesn't show when the app is run. Instead, the text is always set to "Button".
To workaround this for now, set the text manually in code:
button.Text("buttontext");
This will be fixed in the next release.
Original issue reported on code.google.com by [email protected]
on 4 Jan 2012 at 3:45
Please add a class to handle the GoogleIssues API, similar to the DropBox and
FusionTables API. The documentation is straight forward but after messing
around with it for a few hours I realized it is probably something that would
be reused like dropbox and fusion tables, so it should prob go in the bridge
Basic documentation and instructions here
http://code.google.com/p/support/wiki/IssueTrackerAPIJava
You need the gdata-projecthosting-2.1.jar file
I THINK you need the gdata-client-1.0.jar file as well but not sure
and I am not sure about the gdata-core-1.0.jar or gdata-base-1.0.jar, but its
possible
Original issue reported on code.google.com by [email protected]
on 5 May 2012 at 4:14
What steps will reproduce the problem?
1. Create a DropDown component in the GLE and in your code
2. Add items to the DropDown component each time the app starts
3. Set a prompt for the DropDown in the GLE
What is the expected output? What do you see instead?
I expect to the see the prompt I set in the GLE, instead I see the first item
in the dropdown component list as the displayed prompt.
What version of the product are you using? On what operating system?
2.2.32
Win764 bit
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 11 May 2012 at 1:14
Would like the db.batchInsert() method to work for reading from databases as
well as for inserts, specifically the GetValue() method.
Original issue reported on code.google.com by [email protected]
on 25 Mar 2012 at 6:35
What steps will reproduce the problem?
1. add multiple tables to a database
2. insert 5 items into table 1
3. insert 5 items into table 2
4. insert 5 items into table 3
5. for table 2, the 5 items are entered with row id's 6 - 10 and for table 3
row id's 11 - 15. All tables should have 5 records with rowids 1 - 5 on each
table.
What is the expected output? What do you see instead?
each table when adding information should start with rowid = 1
What version of the product are you using? On what operating system?
Latest Jar from 3/14, Windows 7 64 bit
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 16 Mar 2012 at 1:29
It would probably be helpful to have a class that has methods for checking
network states. some examples of useful items would be
boolean internet { returns true if you have internet access, and false if you
don't}
String state { returns "3g" if connected to 3g, "4g" if connected to 4g, "Wifi"
if connected to wifi, "2g" if connected to 2g, or "offline" if not online }
what we need is here
http://stackoverflow.com/questions/2326767/how-do-you-check-the-internet-connect
ion-in-android
Original issue reported on code.google.com by [email protected]
on 14 May 2012 at 4:29
Allow use of more varied sprite sheets. At the moment, only an ImageSprite can
use a spritesheet, and that's only if the spritesheet is aligned in a certain
manner.
It would also be useful for other components as well. If using a lot of
different images (or a lot of components which use an image), it may be better
performance wise to use a spritesheet, rather than loading seperate files.
For instance, I have a view with 7 rows of 7 columns of buttons. That's 49
buttons. They all have an image as their background (though there are only
really a few different actual images). It would be better for performance to
load one sprite sheet, then apply whichever frame to whichever component.
Using TexturePacker, you can generate a spritesheet easily. This also generates
a data file, which the altbridge will read, so it knows the locations of the
different frames.
Original issue reported on code.google.com by [email protected]
on 4 May 2012 at 1:28
MultiChoose would work EXACTLY the same way as ShowChooseDialogue does now,
only it would have more than 2 button choices. Really, I am looking for an
option to have 3 buttons here, because I am having a hard time thinking of when
I would need more than 3, but I'm sure it would come up. So it may be best to
make the method more flexibile. Maybe something like this....
@param Options - number of choices to display
@param buttonText - a string array that matches the int Options in size
public void ShowMultiChooseDialog(int Options, String message, String title,
String [] buttonText) {
//Works the same way as ShowChooseDialouge, when the event gets dispatched, it returns the text of the button the user pressed.
}
Original issue reported on code.google.com by [email protected]
on 11 May 2012 at 1:00
Please add a method for checking if a file already exists or not. This way we
can ask the user if they want to override or not instead of making that
decision for them.
the method should return true if the file exists, false if it doesn't.
Original issue reported on code.google.com by [email protected]
on 17 May 2012 at 5:59
I am not sure how this is handled in android, so going off what i think. My
thoughts are its probably best to do this as a boolean. True is on. False is
off. But it could also be done as an int, 0 and 1. And what I mean by this is
what the status method would be.
like Switch.Status() would return true or 1 for on, and false or 0 for off. I
think right?
along with this should be a method for Switch.Status(boolean/int) so that you
can set the status programmatically.
Can't think of what else someone would use. Maybe a method like Switch.Count()
that returns the number of times the switch has been flipped? (If so a
Switch.Reset() should be made to reset this).
There should probably be events too. Well actually the only event I can think
of is "Switched", or "Flipped", or whatever, when the switch changes.
I guess maybe an event for "On", and one for "Off", might make things insanely
easy....?
All of this is just off the top of my head cause i need to use a switch now. I
can work with whatever functionality you provide...and oh ya, if this already
exists I am gonna kick myself, cause i just wasted a lot of time. (couldn't
find it...i looked).
Original issue reported on code.google.com by [email protected]
on 3 May 2012 at 12:55
I know this is kind of silly, because it doesn't save you much coding, but it
simplifies things and is easy to remember.
My request is to have a .toInt() function that will convert a string to an
integer just like
Integer.parseInt();
I only request it because i am sure it is super easy to add to the bridge. Low
priority...thanks.
Original issue reported on code.google.com by [email protected]
on 11 Mar 2012 at 5:40
I would like a way to customize the default form that is created when using the
right click option and choosing "Create new Form (AltBridge)". I find that I
have some areas I add for every form, even if they are just comments to help me
get organized. It would be very helpful to be able to automatically implement
them.
Or maybe a better option, a way to create a new right click option called
"Create new customized Form (AltBridge)"?
Original issue reported on code.google.com by [email protected]
on 20 Feb 2012 at 2:25
Add a component to the GLE to drop an AnimCanvas into the UI.
Original issue reported on code.google.com by [email protected]
on 8 Apr 2012 at 6:10
This class makes using a sprite sheet made with Texture Packer easy.
SpriteSheetHelper helper = new SpriteSheetHelper(this, R.drawable.spritesheet);
helper.loadSheetData("spritesheet.json");
The json file needs to be put in the /assets folder.
Along with using it for an imagesprite for animations, you can put a bunch of
images into one spritesheet and use that one large image to assign all of your
visible components.
Original issue reported on code.google.com by [email protected]
on 5 May 2012 at 7:33
Please add a Long click eventhandler for any item that can currently handle a
click event.
TH=is would all for anything from a single operation upon long click, to a
popup menu.
Thanks
Original issue reported on code.google.com by [email protected]
on 8 May 2012 at 4:49
What steps will reproduce the problem?
1. Use any view, and set animation points
What is the expected output? What do you see instead?
It should set the animation points. Instead, it crashes with a null pointer
exception.
Original issue reported on code.google.com by [email protected]
on 30 Apr 2012 at 5:42
What steps will reproduce the problem?
1. Place an AnimCanvas with the GLE.
2. Set the AnimCanvas's background to a color resource.
3. Build the app based off an SDK Level lower than 11 (Honeycomb 3.0)
What is the expected output? What do you see instead?
App should load the background color, and assign it to the AnimCanvas'
backgroud like how it looks in the GLE. This doesn't happen because the
getColor() method in APIs lower than 11 doesn't exist. Things work fine when
building off higher API levels (target SDK).
Original issue reported on code.google.com by [email protected]
on 9 Apr 2012 at 8:18
This would be a great component to go along with the RadioGroup component.
Since RadioCheckboxes (not sure what they are really called, so feel free to
rename it properly) have their own id's just like RadioGroups, I felt they
deserved their own component.
Here are some examples of some functions that would be great.
public boolean currentStatus(String nameOfRadioCheckBox) {
//returns true if the component passed is selected, otherwise returns false
}
public boolean settStatus(String nameOfRadioCheckbox, boolean true/false) {
//allows you to set the specific Status of a specific RadioCheckbox
//Obviously if you set one of them to true, it would make whatever was
//already checked, unchecked
return true/false //return true if you had to clear a different
//checkboxes status, false if they were clear already
}
public void settStatus(String nameOfRadioCheckbox, boolean true/false) {
//allows you to set the specific Status of a specific RadioCheckbox
//Obviously if you set one of them to true, it would make whatever was
//already checked, unchecked
}
Original issue reported on code.google.com by [email protected]
on 22 Feb 2012 at 2:34
This method would make the component invisible, without giving up the portion
of the screen it's in. Normally, when you set a component to Visible(false), it
completely disappears, and it's as if it never existed. However, there is at
least one case I can think of where you'd want the component to be "invisible",
but it's space not removed.
When running a view animation upon a Form starting up, let's say you want it to
slide in from the top, down to it's normal sitting position. If you need to
access the component's width/height for any reason, it would report as 0, if
the component was set to Visible(false), as it's no longer even on screen. With
the Hide() method, it will no longer be shown on screen, but the space that it
occupied is just filled with whatever background is behind it (this depends on
the theme, and if you have any views behind it).
This was way more complicated than I meant it to be. Basically, if you need the
physical dimensions of a component while it's not actually shown, use the
Hide() method. To unhide, just use Visible(true).
Original issue reported on code.google.com by [email protected]
on 2 May 2012 at 3:13
This is an internal class used to read sprite sheet data info. This is specific
to the Tecture Packer program http://www.texturepacker.com/
More specifically, it process the JSON output data file that Texture Packer
produces.
This can be used freely, if you change the options to use the basic features
(basically just fit your images into one file, then save the one file out, with
the data file).
Original issue reported on code.google.com by [email protected]
on 5 May 2012 at 7:28
What steps will reproduce the problem?
1. Upload or download a file. If run on a device with android OS 3.0 or higher,
you will get a runtime error.
Original issue reported on code.google.com by [email protected]
on 30 Apr 2012 at 10:01
It appears that when I use this I will be using it dynamically. The URL stays
the same, but the method and name/value pairs will need to be cleared out to
submit a new item. I am requesting either a way to clear out the SoapHelper
component, or destroy. Unless I am wrong...maybe it is not a problem to keep
creating new Soap components, but it seems wasteful to me. Plus if you don't
know how many you are going to need it will be hard to keep track of them all.
So request is for:
SoapHelper.DestroyDataAll(){
//Destroys the data but keeps the method and url (you can always reset them yourself with the set method). This is ideal as I may need to submit 5 methods where the only thing that changes is the data)
}
Original issue reported on code.google.com by [email protected]
on 7 Mar 2012 at 12:27
Please add support for automating the use of widgets in an easy format.
Specifically, looking to handle the widget class inside of the bridge, allowing
for the intents and broadcast receivers all to be handled without the user
having to do anything.
if possible, would like to implement the widget as a component in the bridge
(not sure if this is possible though). Ideally then you would have a "click"
event for the widget. The user should be able to make all adjustments inside
the click event, including changing the widget's graphic if needed. (Not sure
how this would work with active widget, this is more for widgets that do a
simple process of....load up with a graphic image...click the widget, stuff
happens and the widget changes to a different graphic.)
Original issue reported on code.google.com by [email protected]
on 9 Apr 2012 at 2:19
Added MaxSpeed(boolean maxspeed). This will increase the sensor's output to
SENSOR_DELAY_FASTEST. This will drain the battery more, but provide a faster
responding accelerometer (good for games using the accelerometer).
Using false (this is the default) will result in the Accelerometer falling to
the SENSOR_DELAY_GAME setting.
Original issue reported on code.google.com by [email protected]
on 17 May 2012 at 3:34
Add an event to catch when an animation starts, or ends.
Original issue reported on code.google.com by [email protected]
on 2 May 2012 at 1:28
Just like the title says, a method to clear the DoubleList
Original issue reported on code.google.com by [email protected]
on 28 Mar 2012 at 2:46
This is a LOW PRIORITY item. It would be a nice convienance. When using a two
line list after a user makes a selection, this would return either the first
line in the selection, or the second line in the selection. Something like
this (excuse the names...couldnt think of anything good).
In this example, there is a two line list, the user selects the item that looks
like this:
006
John Smith vs the State of Alabama
private String SelectionFirst() {
/* In a two line list, when user makes selection, it returns the item on the
first line (the bolded item). SO in this example, it would return "0451113" */
}
private String SelectionSecond() {
/* In a two line list, when the user makes a selection, this returns the item
on the second line (the smaller text item). So in this example, it would
return "John Smith vs the State of ALabama" */
}
again, this is a LOW PRIORITY item
Original issue reported on code.google.com by [email protected]
on 18 Mar 2012 at 2:59
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.